在linux裡,在/etc/security/limits.conf裡有乙個引數是nofile,作用是控制某使用者的檔案開啟數量。可以使用ulimit -n的命令檢視具體的限制,一但當前檔案開啟數達到nofile上限就無法再開啟檔案,從而使某些應用執行異常,如使用者無法通過ssh登入系統。
通過我們可以使用lsof命令檢視檔案開啟的具體情況,如使用者、程序的資訊。使用
lsof -p pid
可以檢視某乙個程序的檔案開啟數量
lsof -u uid
可以檢視某乙個使用者的檔案開啟數量
但是發現好像沒有乙個引數可以知道所有程序的檔案開啟數量
所以我就寫了個小腳本來統計一下所有程序的檔案開啟數量,從而可以得知到底是哪個程序出現問題,再作進一步的處理,指令碼的具體內容如下
#!/bin/bash
# psof.sh
# author:
# # ####### # # #######
# # # ## # #
# # # # # # #
### ##### # # # #
# # # # # # #
# # # # ## #
# # ####### # # #
# date: 2016-10-09
# description: 計算每個程序的openfiles
tmpfile=/dev/shm/psof.txt
echo "" > $tmpfile
for pid in $(ps -eo pid | grep -v pid)
do echo $pid":"$(lsof -p $pid|wc -l) >> $tmpfile ;
done
echo "pid : openfiles"
sort -nrk 2 -t: $tmpfile
同樣,可以稍作修改用於統計所有使用者的檔案開啟數量
拋磚引玉,以供參考
linux 程序檢視
一,top命令 顯示了當前正執行的程序以及關於它們的重要資訊,包括它們的記憶體和 cpu 用量。該列表既是真實時間的也是互動的。命令描述 q 退出 space 立即重新整理顯示 h 顯示幫助螢幕 k 殺死某程序。你會被提示輸入程序 id 以及要傳送給它的訊號。n 改變要顯示的程序數量。你會被提示輸入...
檢視linux程序
程序是在 cpu 及記憶體中執行的程式 而每個程序可以建立乙個或多個程序 父子程序 檢視程序方法 第一種 ps auxps命令用於報告當前系統的程序狀態。可以搭配kill指令隨時中斷 刪除不必要的程式。ps命令是最基本同時也是非常強大的程序檢視命令,使用該命令可以確定有哪些程序正在執行和執行的狀態 ...
Linux檢視程序and殺死程序
ps命令 顯示程序狀態 ps命令是 process status 的縮寫,ps命令用於顯示當前系統的程序狀態。可以搭配kill指令隨時中斷 刪除不必要的程式。語法格式 ps 引數 a 顯示現行終端機下的所有程式,包括其他使用者的程式 u 以使用者為主的格式來顯示程式狀況 x 顯示所有程式,不以終端機...