ulimit其实就是对单一程序的限制,进程级别的
file-max是所有时程最大的文件数
nr_open是单个进程可分配的最大文件数
确认系统设置的最大文件句柄数
ulimit -a
统计系统中当前打开的总文件句柄数
lsof|awk '{print $2}' |wc -l
根据打开文件句柄的数量降序排列,其中第二列为进程ID:
lsof|awk '{print $2}' |sort|uniq -c|sort -nr|more
查看23711进程连接句柄数
lsof|awk '{print $2}'|sort|uniq -c|sort -nr|more|grep 23711
查看系统级别的能够打开的文件句柄的数量,Centos7默认是794168
# cat /proc/sys/fs/file-max
限制整个系统最大文件句柄数,修改文件:/etc/sysctl.conf
fs.file-max=655350
---------------------------------------------------------------------------------------
当我们得知某个进程的PID后,可以根据PID查找执行程序的路径。
进入内存目录,查看对应PID目录下exe文件的信息:
# ls -al /proc/xxxx/exe
这样就找到了进程对应的完整执行程序的路径。
如果也想同时查找到该进程打开的所有文件,当然包括配置文件等,可以使用
# lsof -p xxxx
比较实用的 lsof相关命令:
lsof `which httpd` //那个进程在使用apache的可执行文件 lsof /etc/passwd //那个进程在占用/etc/passwd lsof /dev/hda6 //那个进程在占用hda6 lsof /dev/cdrom //那个进程在占用光驱 lsof -c sendmail //查看sendmail进程的文件使用情况 lsof -c courier -u ^zahn //显示出那些文件被以courier打头的进程打开,但是并不属于用户zahn lsof -p 30297 //显示那些文件被pid为30297的进程打开
lsof +d /DIR/ 显示目录下被进程打开的文件
lsof +D /DIR/ 同上,但是会搜索目录下的所有目录,时间相对较长 lsof -u1000 //查看uid是100的用户的进程的文件使用情况 lsof -utony //查看用户tony的进程的文件使用情况 lsof -u^tony //查看不是用户tony的进程的文件使用情况(^是取反的意思) lsof -i //显示所有打开的端口 lsof -i:80 //显示所有打开80端口的进程 lsof -i -U //显示所有打开的端口和UNIX domain文件 lsof -i UDP@[url]www.akadia.com:123 //显示那些进程打开了到www.akadia.com的UDP的123(ntp)端口的链接 lsof -i tcp@ohaha.ks.edu.tw:ftp -r //不断查看目前ftp连接的情况(-r,lsof会永远不断的执行,直到收到中断信号,+r,lsof会一直执行,直到没有档案被显示,缺省是15s刷新) lsof -i tcp@ohaha.ks.edu.tw:ftp -n //lsof -n 不将IP转换为hostname,缺省是不加上-n参数