在 Linux 系統中,/proc和/sys都是特殊的文件系統,數據內容是存放在記憶體中,這兩個目錄文件中的內容由內核動態生成,查看這個文件中的內容,實際上就是查詢內核的某些狀態或信息。 可以將這兩個目錄文件理解為虛擬的目錄,即在硬碟上不存在。 /proc 文件系統 proc 是process(進程) ...
在 Linux 系統中,/proc和/sys都是特殊的文件系統,數據內容是存放在記憶體中,這兩個目錄文件中的內容由內核動態生成,查看這個文件中的內容,實際上就是查詢內核的某些狀態或信息。
可以將這兩個目錄文件理解為虛擬的目錄,即在硬碟上不存在。
/proc 文件系統
proc 是process(進程)的縮寫,這個目錄文件裡面存放的是進程的相關信息
信息查看
查看進程信息
在/proc 目錄下每個進程都有一個以其PID命名的目錄,其中包含該進程的信息
/proc/pid
例如:
查看指定進程的線程數
ls /proc/PID/task | wc -l
說明: 下查看線程數量時,通常你會看到所有的線程,包括主線程。所以,實際上你看到的線程數是正確的,因為進程本身的主線程也算作一個線程
查看cpu信息
通過/proc目錄下的cpuinfo,可以查看CPU信息。
cat /proc/cpuinfo
記憶體信息查看
通過/proc目錄下的meminfo兩個文件可以查看cpu和記憶體的信息
cat /proc/meminfo
查看當前系統的掛載點
cat /proc/mounts
查看硬碟分區信息
cat /proc/partitions
修改內核參數
網路參數修改
修改網路參數,是修改 /proc/sys/net 目錄 中的相關文件;
IPv4轉發(路由功能)
# 1:開啟轉發 0:不開啟(預設)
ipv4/ip_forward
是否響應 ping
# 1:不會收到任何響應 0:正常響應
ipv4/icmp_echo_ignore_all
SYN洪水攻擊防範
ipv4/tcp_syncookies
修改記憶體參數
修改記憶體的相關參數,是修改 /proc/sys/vm 目錄 中的相關文件;
使用swap分區的傾向性
# 預設值是60
swappiness
/sys 文件系統
信息查看
查看系統已載入內核模塊
每個已載入的模塊在 /sys/module 下都有一個對應的目錄,其名稱與模塊名稱相同
/sys/module/mod_name
例如:查看某個模塊是否已經載入
ls -l /sys/module | grep -i "bridge"
查看系統上的所有塊設備
每個塊設備都有一個對應的子目錄(與塊設備的名稱同名),這些子目錄內部包含關於設備的詳細信息,例如設備的大小、模型、統計信息等。這些信息以文件形式存在,可以直接讀取它們來獲取有關設備的信息。
/sys/block
例如:查看主機上的塊設備文件
ls -l /sys/block/
sysctl 使用
sysctl 主要用於查詢和修改 /proc/sys 目錄下的內核參數,不能用於修改 /sys 目錄或其他位置的參數。 但是使用sysctl調整的內核參數也是臨時生效的,可以通過寫入配置文件的方式來實現持久化生效。
systctl的配置文件
-
sysctl有很多個個配置文件,主要從 /etc/sysctl.conf 以及 /etc/sysctl.d/ 目錄中的文件讀取設置。一般只需要將相關配置放在 /etc/sysctl.conf 這個文件裡面就行了。
-
編寫配置文件時,有一點不同的是,sysctl中的配置是使用點(.)來隔開路徑。/proc/sys不用寫, 因為這個配置文件對應就是管理/proc/sys這個目錄的。
-
運行 sysctl -p(-p:從指定的文件載入系統參數) 命令(沒有指定具體文件)載入參數時,系統首先會讀取 /etc/sysctl.conf 文件中的設置,然後按字母/數字順序讀取 /etc/sysctl.d/ 目錄中的所有 .conf 文件
說明:
-p 參數 從指定的配置文件中載入參數生效,不指定預設是/etc/sysctl.conf 文件中的設置,然後按字母/數字順序讀取 /etc/sysctl.d/ 目錄中的所有 .conf 文件
如果只是想臨時改變某個指定參數的值,使用sysctl 的 -w 參數 即可。
例如:臨時開啟網路轉發
sysctl -w net.ipv4.ip_forward=1
通過 sysctl 的 -a 參數 即可顯示所有生效的系統參數
sysctl -a
例如:禁止ping通本機
vim /etc/sysctl.d/test.conf
net.ipv4.icmp_echo_ignore_all=1
sysctl -p /etc/sysctl.d/test.conf