1. 程式人生 > >查看linux下進程打開的文件句柄數並清理

查看linux下進程打開的文件句柄數並清理

inode cal 大小 tmp oca mkdir -p 用戶 post inux

---查看系統默認的最大文件句柄數,系統默認是1024
# ulimit -n
1024

----查看當前進程打開了多少句柄數
# lsof -n|awk ‘{print $2}‘|sort|uniq -c|sort -nr|more
131 24204 
57 24244  
57 24231   ........

其中第一列是打開的句柄數,第二列是進程ID。
可以根據ID號來查看進程名。
# ps aef|grep 24204
nginx  24204 24162 99 16:15 ?    00:24:25 /usr/local/nginx/sbin/nginx -s

Linux有硬性限制和軟性限制。可以通過ulimit來設定這兩個參數。方法如下,以root用戶運行以下命令:

# ulimit -HSn 4096

以上命令中,H指定了硬性大小,S指定了軟性大小,n表示設定單個進程最大的打開文件句柄數量。個人覺得最好不要超過4096,畢竟打開的文件句柄數越多響應時間肯定會越慢。設定句柄數量後,系統重啟後,又會恢復默認值。如果想永久保存下來,可以修改.bash_profile文件,可以修改 /etc/profile 把上面命令加到最後.

1.使用df -i 查看inode已經使用100%
2.使用ls -lt ar/spool/postfix/maildrop/ | wc -l 查看該目錄下文件有330W
3.mkdir -pv /tmp/test
4.rsync --delete-before -a -H -v --progress --stats /tmp/test/ ar/spool/postfix/maildrop 使用該命令進行清理

查看linux下進程打開的文件句柄數並清理