Shell編程時(shí)常用的系統(tǒng)文件

2018-06-08 17:09 更新

防偽碼:出淤泥而不染,濯清漣而不妖。

10.1 Linux  系統(tǒng)目錄結(jié)構(gòu)

/  根目錄,所有文件的第一級(jí)目錄

/home  普通用戶(hù)家目錄

/root  超級(jí)用戶(hù)家目錄

/usr  用戶(hù)命令、應(yīng)用程序等目錄

/var  應(yīng)用數(shù)據(jù)、日志等目錄

/lib  庫(kù)文件和內(nèi)核模塊目錄

/etc  系統(tǒng)和軟件配置文件

/bin  可執(zhí)行程序目錄

/boot  內(nèi)核加載所需的文件,grub 引導(dǎo)

/dev  設(shè)備文件目錄,比如磁盤(pán)驅(qū)動(dòng)

/tmp  臨時(shí)文件目錄

/opt  第三方軟件安裝目錄

10.2  環(huán)境變量文件

8.1.1  系統(tǒng)級(jí)

系統(tǒng)級(jí)變量文件對(duì)所有用戶(hù)生效。

/etc/profile # 系統(tǒng)范圍內(nèi)的環(huán)境變量和啟動(dòng)文件。不建議把要做的事情寫(xiě)在這里面,最好創(chuàng)建

一個(gè)自定義的,放在/etc/profile.d 下

/etc/bashrc # 系統(tǒng)范圍內(nèi)的函數(shù)和別名

8.1.2  用戶(hù)級(jí)

用戶(hù)級(jí)變量文件對(duì)自己生效,都在自己家目錄下。

~/.bashrc # 用戶(hù)指定別名和函數(shù)

~/.bash_logout # 用戶(hù)退出執(zhí)行

~/.bash_profile # 用戶(hù)指定變量和啟動(dòng)程序

~/.bash_history # 用戶(hù)執(zhí)行命令歷史文件

開(kāi)啟啟動(dòng)腳本順序:/etc/profile -> /etc/profile.d/*.sh -> ~/.bash_profile -> ~/.bashrc ->

/etc/bashrc

10.3  系統(tǒng)配置文件

/etc/issue  系統(tǒng)版本

/etc/hosts  主機(jī)名與 IP 對(duì)應(yīng)關(guān)系

/etc/reslov.conf  DNS 服務(wù)器地址

/etc/hostname  主機(jī)名

/etc/sysctl.conf  系統(tǒng)參數(shù)配置文件

/etc/sudoers  sudo 權(quán)限配置

/etc/init.d  服務(wù)啟動(dòng)腳本

/etc/sysconfig/network-

scripts

網(wǎng)卡信息配置目錄

/etc/rc.d/rc.local

系統(tǒng) init 初始化完后執(zhí)行,不建議將啟動(dòng)服務(wù)寫(xiě)在這里面,應(yīng)創(chuàng)建

自己的 systemd 或 udev

/etc/fatab  硬盤(pán)自動(dòng)掛載配置

/etc/inittab  系統(tǒng)啟動(dòng)運(yùn)行級(jí)別

/etc/crontab 系統(tǒng)級(jí)任務(wù)計(jì)劃

/var/spool/cron  用戶(hù)級(jí)任務(wù)計(jì)劃,此目錄下以用戶(hù)名命名對(duì)應(yīng)每個(gè)用戶(hù)的任務(wù)計(jì)劃

/etc/cron.d  描述計(jì)算機(jī)任務(wù)計(jì)劃

/etc/hosts.allow  TCP 包訪問(wèn)列表

/etc/hosts.deny  TCP 包拒絕列表

/etc/skel  新賬戶(hù)默認(rèn)環(huán)境文件

/usr/share/doc  各軟件的文檔

/etc/sshd_config  SSH 服務(wù)配置文件

/var/log  系統(tǒng)和應(yīng)用程序日志目錄

/var/spool/mail  郵件目錄

任務(wù)計(jì)劃說(shuō)明:

# 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 4 v /dev  目錄

/dev 目錄下存放的是一些設(shè)備文件。

/dev/hd[a-t]  IDE 設(shè)備

/dev/sd[a-z]  SCSI 設(shè)備

/dev/dm-[-9]  LVM 邏輯磁盤(pán)

/dev/null  黑洞

/dev/zeror  無(wú)限 0 數(shù)據(jù)流

/dev/random 和/dev/urandom  隨機(jī)數(shù)設(shè)備

10.5 5 c /proc  目錄

/proc 是一個(gè)虛擬目錄,數(shù)據(jù)存儲(chǔ)在內(nèi)存中,存放內(nèi)核運(yùn)行時(shí)的參數(shù)、網(wǎng)絡(luò)信息、進(jìn)程狀態(tài)等。

10.5 5 .1 /proc

/proc/[0-9]+  此目錄下數(shù)字命名的目錄是運(yùn)行進(jìn)程信息,目錄名為 PID

/proc/meminfo  物理內(nèi)存、交換空間等信息,free

/proc/loadavg  系統(tǒng)負(fù)載

/proc/uptime

系統(tǒng)運(yùn)行時(shí)間

計(jì)算系統(tǒng)啟動(dòng)時(shí)間:

date -d "$(awk -F. '{print $1}' /proc/uptime) second ago"

+"%Y-%m-%d %H:%M:%S"

或 who -b

/proc/cpuinfo  CPU 信息

/proc/modules  系統(tǒng)已加載的模塊或驅(qū)動(dòng),lsmod

/proc/mounts  文件系統(tǒng)掛載信息,mount

/proc/swaps  swap 分區(qū)信息

/proc/partitions  系統(tǒng)分區(qū)信息

/proc/version  內(nèi)核版本

/proc/stat  CPU 利用率,磁盤(pán),內(nèi)存頁(yè)

/proc/devices  可用的設(shè)備列表

10.5 5 .2 /proc/net

/proc/net 目錄存放的是一些網(wǎng)絡(luò)協(xié)議信息。

/proc/net/tcp  TCP 狀態(tài)連接信息,netstat

/proc/net/udp  UDP 狀態(tài)連接信息

/proc/net/arp  arp 信息表

/proc/net/dev  網(wǎng)卡流量

/proc/net/snmp  網(wǎng)絡(luò)傳輸協(xié)議的收發(fā)包信息

/proc/net/sockstat  socket 使用情況,比如已使用,正在使用

/proc/net/netstat  網(wǎng)絡(luò)統(tǒng)計(jì)數(shù)據(jù),netstat -s

/proc/net/route  路由表

/proc/net/nf_conntrack 當(dāng)前連接追蹤表

10. .5 5 .3 /proc/sys

這個(gè)目錄下的文件可被讀寫(xiě),存了大多數(shù)內(nèi)核參數(shù),可以修改改變內(nèi)核行為。所以修改這些文件要特

別小心,修改錯(cuò)誤可能導(dǎo)致內(nèi)核不穩(wěn)定。

有四個(gè)主要的目錄:

fs # 文件系統(tǒng)各方面信息,包括配額、文件句柄、inode 和目錄項(xiàng)。

kernel # 內(nèi)核行為的信息

net # 網(wǎng)絡(luò)配置信息,包括以太網(wǎng)、ipx、ipv4 和 ipv6。

vm # Linux 內(nèi)核的虛擬內(nèi)存子系統(tǒng),通常稱(chēng)為交換空間。

/proc/sys/fs/dentry-state

目錄緩存狀態(tài),第一個(gè)值目錄緩存總條目數(shù)量,

第二個(gè)值未使用的條目數(shù)量,第三個(gè)值已經(jīng)釋

放數(shù)量,第四個(gè)當(dāng)前頁(yè)所要求的系統(tǒng),最后兩

個(gè)數(shù)字不常用,只顯示 0

/proc/sys/fs/file-max

內(nèi)核分配所有進(jìn)程最大打開(kāi)文件句柄數(shù)量,可

適當(dāng)增加此值

/proc/sys/fs/file-nr

只讀,第一個(gè)值已分配的文件句柄數(shù)量,第二

個(gè)值分配沒(méi)有使用文件句柄數(shù)量,第三個(gè)值文

件句柄最大數(shù)量。lsof

/proc/sys/kernel/acct

第一個(gè)值日志恢復(fù)所需空間百分比,第二個(gè)值

百分比閾值,第三個(gè)值時(shí)間間隔

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

組合鍵重啟計(jì)算機(jī),只為 0 同步緩沖區(qū)到磁盤(pán),

1 為不同步

/proc/sys/kernel/domainname  配置系統(tǒng)域名

/proc/sys/kernel/exec-shield

配置內(nèi)核執(zhí)行保護(hù)功能,防止某類(lèi)型緩沖區(qū)溢

出攻擊。0 為禁用,1 開(kāi)啟

/proc/sys/kernel/hostname  配置系統(tǒng)主機(jī)名

/proc/sys/kernel/osrelease  內(nèi)核版本號(hào)

/proc/sys/kernel/ostype  操作系統(tǒng)類(lèi)型

/proc/sys/kernel/shmall  設(shè)置共享內(nèi)存的總量,以字節(jié)為單位

/proc/sys/kernel/shmmax  設(shè)置最大共享內(nèi)存段

/proc/sys/kernel/shmmni  設(shè)置共享內(nèi)存段最大數(shù)量

/proc/sys/kernel/threads-max  設(shè)置最大允許線程數(shù)量

/proc/sys/kernel/pid_max  設(shè)置最大允許創(chuàng)建的 pid 數(shù)量

/proc/sys/kernel/version  顯示最后一次編譯內(nèi)核時(shí)間

/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  設(shè)置數(shù)據(jù)包隊(duì)列允許最大數(shù)量

/proc/sys/net/core/optmem_max  設(shè)置 socket 允許最大緩沖區(qū)大小

/proc/sys/net/core/somaxconn  每個(gè)端口最大監(jiān)聽(tīng)隊(duì)列長(zhǎng)度

/proc/sys/net/core/rmem_default  設(shè)置 socket 接收默認(rèn)緩沖區(qū)大小,單位字節(jié)

/proc/sys/net/core/rmem_max  設(shè)置 socket 接收最大緩沖區(qū)大小

/proc/sys/net/core/wmem_default  設(shè)置 socket 發(fā)送默認(rèn)緩沖區(qū)大小

/proc/sys/net/core/wmem_max  設(shè)置 socket 發(fā)送最大緩沖區(qū)大小

/proc/sys/net/nf_conntrack_max  設(shè)置連接追蹤的最大值

/proc/sys/net/ipv4/icmp_echo_ignore_all

和 icmp_echo_ignore_broadcasts

設(shè)置是否忽略 icmp 響應(yīng)包和廣播包,0 為不忽

略,1 為忽略

/proc/sys/net/ipv4/ip_default_ttl  設(shè)置默認(rèn)生存時(shí)間

/proc/sys/net/ipv4/ip_forward

允許系統(tǒng)接口轉(zhuǎn)發(fā)數(shù)據(jù)包,默認(rèn) 0 為關(guān)閉,1 為

開(kāi)啟

/proc/sys/net/ipv4/ip_local_port_range

指定使用本地 TCP 或 UDP 端口范圍,第一個(gè)值

最低,第二個(gè)值最高

/proc/sys/net/ipv4/tcp_syn_retries  限制重新發(fā)送 syn 嘗試建立連接次數(shù)

/proc/sys/net/ipv4/tcp_synack_retries  syn ack 確認(rèn)包嘗試次數(shù)

/proc/sys/net/ipv4/tcp_syncookies

是否啟用 syn cookie,0 為關(guān)閉,默認(rèn) 1 為開(kāi)

/proc/sys/net/ipv4/tcp_max_tw_buckets  系統(tǒng)保持 TIME_WAIT 最大數(shù)量

/proc/sys/net/ipv4/tcp_tw_recycle

是否啟用 TIME_WAIT 快速收回,默認(rèn) 0 為關(guān)閉,

1 為開(kāi)啟

/proc/sys/net/ipv4/tcp_tw_reuse  是否啟用 TIME_WAIT 復(fù)用,默認(rèn) 0 為關(guān)閉,1

為開(kāi)啟

/proc/sys/net/ipv4/tcp_keepalive_time

TCP 連接保持時(shí)間(默認(rèn) 2 小時(shí)),當(dāng)連接活動(dòng),

定時(shí)器會(huì)重新復(fù)位。

/proc/sys/net/ipv4/tcp_keepalive_intvl  TCP 探測(cè)間隔時(shí)間(默認(rèn) 75 秒)

/proc/sys/net/ipv4/tcp_keepalive_probes

發(fā)送 TCP 探測(cè)包(特殊的消息包,很小,專(zhuān)門(mén)

檢查存活)的總數(shù)量,總共 9 次,每次間隔時(shí)

間是 75 秒,大約 11 分鐘如果對(duì)方不應(yīng)答內(nèi)核

就丟棄

/proc/sys/net/ipv4/tcp_mem

TCP 使用內(nèi)存,單位頁(yè)。第一個(gè)值內(nèi)存使用下

限,低于此值內(nèi)核不做處理,第二個(gè)值超過(guò),

內(nèi)核會(huì)進(jìn)入壓力模式,第三個(gè)值超過(guò),就會(huì)拒

絕分配 socket。

/proc/sys/vm/swappiness

內(nèi)核按此值百分比來(lái)使用 swap,值越小越不考

慮使用物理內(nèi)存,0 為盡可能不使用 swap

/proc/sys/vm/overcommit_memory

控制內(nèi)存分配,默認(rèn) 0 為內(nèi)核先評(píng)估可用內(nèi)存,

如果足夠允許申請(qǐng),否則拒絕,1 為允許分配

所有物理內(nèi)存,2 為允許分配超過(guò)物理內(nèi)存和

交換空間總和的內(nèi)存

/proc/sys/vm/overcommit_ratio

指定物理內(nèi)存比率,當(dāng) overcommit_memory=2

時(shí),用戶(hù)空間進(jìn)程可使用的內(nèi)存不超過(guò)物理內(nèi)

存*overcommit_ratio+swap

10. .6 6 系統(tǒng) 其他 常用文件

/sys/class/net

shell 作為 TCP 客戶(hù)端:

/dev/tcp/host/port

/dev/udp/host/port

如果 host 和 port 是一個(gè)有效,Bash 打開(kāi)一個(gè) TCP 或 UDP 連接到對(duì)應(yīng)的 socket。


本文出自 “一盞燭光” 博客,謝絕轉(zhuǎn)載!

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)