[英]How many open files for each process running for a specific user in Linux
在Linux上運行Apache和Jboss,有時我的服務器意外停止說問題是太多打開文件。
我知道我們可能會在/etc/security/limits.conf中為nproc和nofile設置一個更高的限制來修復打開的文件問題,但是我試圖獲得更好的輸出,例如使用watch來實時監控它們。
使用此命令行,我可以看到每個PID打開的文件數量:
lsof -u apache | awk '{print $2}' | sort | uniq -c | sort -n
輸出(第1列是用戶apache的打開文件數):
1 PID
1335 13880
1389 13897
1392 13882
如果我可以添加watch命令就足夠了,但下面的代碼不起作用:
watch lsof -u apache | awk '{print $2}' | sort | uniq -c | sort -n
你應該把命令內部引用如下:
watch 'lsof -u apache | awk '\''{print $2}'\'' | sort | uniq -c | sort -n'
或者您可以將命令放入像test.sh這樣的shell腳本中,然后使用watch。
chmod +x test.sh
watch ./test.sh
此命令將告訴您Apache打開了多少個文件:
ps -A x |grep apache | awk '{print $1}' | xargs -I '{}' ls /proc/{}/fd | wc -l
您可能必須以root身份運行它才能訪問進程fd目錄。 這聽起來像你有一個沒有關閉其文件描述符的Web應用程序。 我會集中精力在那個領域。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.