zoukankan      html  css  js  c++  java
  • 12. Shell编程常用的系统文件

    12.1 Linux系统目录结构

    /

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

    /home

    普通用户家目录

    /root

    超级用户家目录

    /usr

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

    /var

    应用数据、日志等目录

    /lib

    库文件和内核模块目录

    /etc

    系统和软件配置文件

    /bin

    可执行程序目录

    /boot

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

    /dev

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

    /tmp

    临时文件目录

    /opt

    第三方软件安装目录

    12.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

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

    12.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任务计划说明:

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

    12.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

    随机数设备

    12.5 /proc目录

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

    12.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

    可用的设备列表

    12.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

    当前连接追踪表

    12.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

  • 相关阅读:
    修改MySQL的数据目录
    Ubuntu安装Sublime Text3插件Emmet的依赖PyV8
    ThoughtWorks的面试总结
    使用百度地图做地理追踪
    Make a plan
    ubuntu 下php + nginx
    编译Nginx
    CSS清除浮动
    关于项目提测质量的一点思考
    Jenkins配置
  • 原文地址:https://www.cnblogs.com/hackerlin/p/12504006.html
Copyright © 2011-2022 走看看