第十章 Shell编程时常用的系统文件

简介: 第十章 Shell编程时常用的系统文件

10.1 Linux系统目录结构

/

根目录,所有文件的第一级目录

/home

普通用户家目录

/root

超级用户家目录

/usr

用户命令、应用程序等目录

/var

应用数据、日志等目录

/lib

库文件和内核模块目录

/etc

系统和软件配置文件

/bin

可执行程序目录

/boot

内核加载所需的文件,grub引导

/dev

设备文件目录,比如磁盘驱动

/tmp

临时文件目录

/opt

第三方软件安装目录

10.2 环境变量文件

系统级

系统级变量文件对所有用户生效。

/etc/profile   # 系统范围内的环境变量和启动文件。不建议把要做的事情写在这里面,最好创建一个自定义的,放在/etc/profile.d下

/etc/bashrc    # 系统范围内的函数和别名

用户级

用户级变量文件对自己生效,都在自己家目录下。

~/.bashrc     # 用户指定别名和函数

~/.bash_logout   # 用户退出执行

~/.bash_profile  # 用户指定变量和启动程序

~/.bash_history  # 用户执行命令历史文件

开启启动脚本顺序:/etc/profile-> /etc/profile.d/*.sh -> ~/.bash_profile -> ~/.bashrc ->/etc/bashrc

因此,我们可以把写的脚本放到以上文件里执行。

10.3 系统配置文件

/etc/issue

系统版本

/etc/hosts

主机名与IP对应关系

/etc/resolv.conf

DNS服务器地址

/etc/hostname

主机名

/etc/sysctl.conf

系统参数配置文件

/etc/sudoers

sudo权限配置

/etc/init.d

服务启动脚本

/etc/sysconfig/network-scripts   

网卡信息配置目录

/etc/rc.d/rc.local

系统init初始化完后执行,不建议将启动服务写在这里面,应创建自己的systemd或udev

/etc/fstab

硬盘自动挂载配置

/etc/inittab

系统启动运行级别

/etc/crontab  

系统级任务计划

/var/spool/cron

用户级任务计划,此目录下以用户名命名对应每个用户的任务计划

/etc/cron.d

描述计算机任务计划

/etc/hosts.allow

TCP包访问列表

/etc/hosts.deny

TCP包拒绝列表

/etc/skel

新账户默认环境文件

/usr/share/doc

各软件的文档

/etc/sshd_config

SSH服务配置文件

/var/log

系统和应用程序日志目录

/var/spool/mail

邮件目录

crontab任务计划说明:

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed 

10.4 /dev目录

/dev目录下存放的是一些设备文件。

/dev/hd[a-t]

IDE设备

/dev/sd[a-z]

SCSI设备

/dev/dm-[-9]

LVM逻辑磁盘

/dev/null

黑洞

/dev/zero

无限0数据流

/dev/random和/dev/urandom

随机数设备



10.5 /proc目录

/proc是一个虚拟目录,数据存储在内存中,存放内核运行时的参数、网络信息、进程状态等。

10.5.1/proc

/proc/[0-9]+

此目录下数字命名的目录是运行进程信息,目录名为PID

/proc/meminfo

物理内存、交换空间等信息,free

/proc/loadavg

系统负载

/proc/uptime

系统运行时间

计算系统启动时间:

date -d "$(awk -F.  '{print $1}' /proc/uptime) second ago" +"%Y-%m-%d %H:%M:%S"

或 who -b 

/proc/cpuinfo

CPU信息

/proc/modules

系统已加载的模块或驱动,lsmod

/proc/mounts

文件系统挂载信息,mount

/proc/swaps

swap分区信息

/proc/partitions

系统分区信息

/proc/version

内核版本

/proc/stat

CPU利用率,磁盘,内存页

/proc/devices

可用的设备列表

10.5.2/proc/net

/proc/net 目录存放的是一些网络协议信息。

/proc/net/tcp

TCP状态连接信息,netstat

/proc/net/udp

UDP状态连接信息

/proc/net/arp

arp信息表

/proc/net/dev

网卡流量

/proc/net/snmp

网络传输协议的收发包信息

/proc/net/sockstat

socket使用情况,比如已使用,正在使用

/proc/net/netstat

网络统计数据,netstat -s

/proc/net/route

路由表

/proc/net/nf_conntrack

当前连接追踪表

10.5.3/proc/sys

这个目录下的文件可被读写,存了大多数内核参数,可以修改改变内核行为。所以修改这些文件要特别小心,修改错误可能导致内核不稳定。

有四个主要的目录:

fs      # 文件系统各方面信息,包括配额、文件句柄、inode和目录项。

kernel   # 内核行为的信息

net     # 网络配置信息,包括以太网、ipx、ipv4和ipv6。

vm      #Linux内核的虚拟内存子系统,通常称为交换空间。

/proc/sys/fs/file-max

内核分配所有进程最大打开文件句柄数量,可适当增加此值

/proc/sys/fs/file-nr

只读,第一个值已分配的文件句柄数量,第二个值分配没有使用文件句柄数量,第三个值文件句柄最大数量。lsof

/proc/sys/kernel/acct

第一个值日志恢复所需空间百分比,第二个值百分比阈值,第三个值时间间隔

/proc/sys/kernel/ctrl-alt-del

组合键重启计算机,只为0同步缓冲区到磁盘,1为不同步

/proc/sys/kernel/domainname

配置系统域名

/proc/sys/kernel/exec-shield

配置内核执行保护功能,防止某类型缓冲区溢出攻击。0为禁用,1开启

/proc/sys/kernel/hostname

配置系统主机名

/proc/sys/kernel/osrelease

内核版本号

/proc/sys/kernel/ostype

操作系统类型

/proc/sys/kernel/shmall

设置共享内存的总量,以字节为单位

/proc/sys/kernel/shmmax

设置最大共享内存段

/proc/sys/kernel/shmmni

设置共享内存段最大数量

/proc/sys/kernel/threads-max

设置最大允许线程数量

/proc/sys/kernel/pid_max

设置最大允许创建的pid数量

/proc/sys/kernel/version

显示最后一次编译内核时间

/proc/sys/kernel/random/uuid

生成uuid

/proc/sys/kernel/core_pattern

coredump控制core文件位置和保存格式

echo "/corefile/core-%e-%p-%t"  

>  /proc/sys/kernel/core_pattern

/proc/sys/net/core/netdev_max_backlog

设置数据包队列允许最大数量

/proc/sys/net/core/optmem_max

设置socket允许最大缓冲区大小

/proc/sys/net/core/somaxconn

每个端口最大监听队列长度

/proc/sys/net/core/rmem_default

设置socket接收默认缓冲区大小,单位字节

/proc/sys/net/core/rmem_max

设置socket接收最大缓冲区大小

/proc/sys/net/core/wmem_default

设置socket发送默认缓冲区大小

/proc/sys/net/core/wmem_max

设置socket发送最大缓冲区大小

/proc/sys/net/nf_conntrack_max

设置连接追踪的最大值

/proc/sys/net/ipv4/icmp_echo_ignore_all和icmp_echo_ignore_broadcasts

设置是否忽略icmp响应包和广播包,0为不忽略,1为忽略

/proc/sys/net/ipv4/ip_default_ttl

设置默认生存时间

/proc/sys/net/ipv4/ip_forward

允许系统接口转发数据包,默认0为关闭,1为开启

/proc/sys/net/ipv4/ip_local_port_range

指定使用本地TCP或UDP端口范围,第一个值最低,第二个值最高

/proc/sys/net/ipv4/tcp_syn_retries

限制重新发送syn尝试建立连接次数

/proc/sys/net/ipv4/tcp_synack_retries

syn ack确认包尝试次数

/proc/sys/net/ipv4/tcp_syncookies

是否启用syn cookie,0为关闭,默认1为开启

/proc/sys/net/ipv4/tcp_max_tw_buckets

系统保持TIME_WAIT最大数量

/proc/sys/net/ipv4/tcp_tw_recycle

是否启用TIME_WAIT快速收回,默认0为关闭,1为开启

/proc/sys/net/ipv4/tcp_tw_reuse

是否启用TIME_WAIT复用,默认0为关闭,1为开启

/proc/sys/net/ipv4/tcp_keepalive_time

TCP连接保持时间(默认2小时),当连接活动,定时器会重新复位。

/proc/sys/net/ipv4/tcp_keepalive_intvl

TCP探测间隔时间(默认75秒)

/proc/sys/net/ipv4/tcp_keepalive_probes

发送TCP探测包(特殊的消息包,很小,专门检查存活)的总数量,总共9次,每次间隔时间是75秒,大约11分钟如果对方不应答内核就丢弃

/proc/sys/net/ipv4/tcp_mem

TCP使用内存,单位页。第一个值内存使用下限,低于此值内核不做处理,第二个值超过,内核会进入压力模式,第三个值超过,就会拒绝分配socket。

/proc/sys/vm/swappiness

内核按此值百分比来使用swap,值越小越不考虑使用物理内存,0为尽可能不使用swap

/proc/sys/vm/overcommit_memory

控制内存分配,默认0为内核先评估可用内存,如果足够允许申请,否则拒绝,1为允许分配所有物理内存,2为允许分配超过物理内存和交换空间总和的内存

/proc/sys/vm/overcommit_ratio

指定物理内存比率,当overcommit_memory=2时,用户空间进程可使用的内存不超过物理内存*overcommit_ratio+swap


参考资料:

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/s2-proc-dir-sys.html

相关文章
|
1月前
|
Shell
Shell 文件包含
10月更文挑战第5天
33 4
|
2月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
2月前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
22天前
|
监控 网络协议 Shell
ip和ip网段攻击拦截系统-绿叶结界防火墙系统shell脚本
这是一个名为“小绿叶技术博客扫段攻击拦截系统”的Bash脚本,用于监控和拦截TCP攻击。通过抓取网络数据包监控可疑IP,并利用iptables和firewalld防火墙规则对这些IP进行拦截。同时,该系统能够查询数据库中的白名单,确保合法IP不受影响。此外,它还具备日志记录功能,以便于后续分析和审计。
43 6
|
19天前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
1月前
|
Shell
Shell编程(下)
Shell编程(下)
88 1
|
1月前
|
Shell Linux Windows
Shell编程(上)
Shell编程(上)
40 1
|
1月前
|
Shell Linux 开发工具
|
1月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
65 12
|
2月前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余