簡體   English   中英

在Linux中為特定用戶運行的每個進程有多少個打開的文件

[英]How many open files for each process running for a specific user in Linux

在Linux上運行Apache和Jboss,有時我的服務器意外停止說問題是太多打開文件。

我知道我們可能會在/etc/security/limits.conf中nprocnofile設置一個更高的限制來修復打開的文件問題,但是我試圖獲得更好的輸出,例如使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM