ukula 发表于 2018-8-18 14:53:06

第十章 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
  IDE设备
  /dev/sd
  SCSI设备
  /dev/dm-[-9]
  LVM逻辑磁盘
  /dev/null
  黑洞
  /dev/zero
  无限0数据流
  /dev/random和/dev/urandom
  随机数设备

  博客地址:http://lizhenliang.blog.51cto.com
  QQ群:323779636(Shell/Python运维开发群)
10.5 /proc目录
  /proc是一个虚拟目录,数据存储在内存中,存放内核运行时的参数、网络信息、进程状态等。
10.5.1/proc
  /proc/+
  此目录下数字命名的目录是运行进程信息,目录名为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编程时常用的系统文件