业无高卑志当坚,男儿有求安得闲?这篇文章主要讲述Shell 编程时常用的系统文件相关的知识,希望能为你提供帮助。
1.
Linux 系统目录结构 / 根目录,所有文件的第一级目录/home
普通用户家目录
/root
超级用户家目录
/usr
用户命令、应用程序等目录
/var
应用数据、日志等目录
/lib
库文件和内核模块目录
/etc
系统和软件配置文件
/bin
可执行程序目录
/boot
内核加载所需的文件,grub 引导
/dev
设备文件目录,比如磁盘驱动/tmp
临时文件目录
/opt
第三方软件安装目录
?
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
因此,我们可以把写的脚本放到以上文件里执行。
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
【Shell 编程时常用的系统文件】TCP 包访问列表
/etc/hosts.deny
TCP 包拒绝列表
/usr/share/doc
各软件的文档
/etc/sshd_config
SSH 服务配置文件
/var/log
系统和应用程序日志目录
/var/spool/mail
邮件目录
4.
/dev 目录 /dev 目录下存放的是一些设备文件。
/dev/hd[a-t]
IDE 设备
/dev/sd[a-z]
SCSI 设备
/dev/dm-[-9]
LVM 逻辑磁盘
/dev/null
黑洞
/dev/zero
无限 0 数据流
5.
/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
可用的设备列表
6.
/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
路由表
7.
/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/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
控制生成 core dump 文件位置和保存格式
/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/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/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
推荐阅读
- 进程调度案例分析(为何不能调度())
- SiP和SoC之间有哪些区别()
- 同时和分层访问存储组织之间的区别
- SQL中简单视图和复杂视图之间的区别
- Servlet和JSP之间有什么区别()
- Java中Scanner和BufferReader类之间的区别
- Docker命令RUN、CMD和ENTRYPOINT之间的区别
- 可路由和不可路由协议之间的区别
- C#中Ref和Out关键字之间的区别