linux系统监控(四)--- lsof 详解

###############################################################################
 
 lsof命令的常用方法总结
 
###############################################################################
lsof 命令:


(1) lsof 文件名 显示占用了指定文件的进程
      [root@cacti test]# lsof /var/log/mysql.log
      COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
      mysqld 14668 mysql 1u REG 3,3 1976 6475578 /var/log/mysql.log
      mysqld 14668 mysql 2u REG 3,3 1976 6475578 /var/log/mysql.log


(2) lsof -i :端口 查看指定端口运行的程序和建立的连接
      [root@cacti apache]# lsof -i :80
      COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
      httpd 1125 daemon 3u IPv6 9200 TCP *:http (LISTEN)
      httpd 3608 daemon 3u IPv6 9200 TCP *:http (LISTEN)
      httpd 5008 root 3u IPv6 9200 TCP *:http (LISTEN)
      httpd 7767 daemon 3u IPv6 9200 TCP *:http (LISTEN)
      httpd 7770 daemon 3u IPv6 9200 TCP *:http (LISTEN)
      httpd 7771 daemon 3u IPv6 9200 TCP *:http (LISTEN)
      httpd 24693 daemon 3u IPv6 9200 TCP *:http (LISTEN)
      httpd 30472 daemon 3u IPv6 9200 TCP *:http (LISTEN)
      httpd 30652 daemon 3u IPv6 9200 TCP *:http (LISTEN)
      httpd 31168 daemon 3u IPv6 9200 TCP *:http (LISTEN)
      httpd 31754 daemon 3u IPv6 9200 TCP *:http (LISTEN)
      [root@cacti apache]#
      
      # lsof -i udp:53
      同样的,也可以找到使用某个tcp端口的进程:
      # lsof -i tcp:80
      找到某个用户的所有网络连接


(3) lsof -c 程序名称 显示指定程序现在占用的文件
      [root@cacti apache]# lsof -c mysqld |head -10
      COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
      mysqld_sa 4684 root cwd DIR 3,3 4096 4321224 /usr/local/mysql
      mysqld_sa 4684 root rtd DIR 3,3 4096 2 /
      mysqld_sa 4684 root txt REG 3,3 735004 5069152 /bin/bash
      mysqld_sa 4684 root mem REG 3,3 5380 3309887 /usr/lib/gconv/ISO8859-1.so
      mysqld_sa 4684 root mem REG 3,3 125736 2945711 /lib/ld-2.5.so
      mysqld_sa 4684 root mem REG 3,3 1597968 2945712 /lib/libc-2.5.so
      mysqld_sa 4684 root mem REG 3,3 16428 2945713 /lib/libdl-2.5.so
      mysqld_sa 4684 root mem REG 3,3 46680 2943401 /lib/libnss_files-2.5.so
      mysqld_sa 4684 root mem REG 3,3 13084 2945736 /lib/libtermcap.so.2.0.8
      [root@cacti apache]#


(4) lsof +d 目录 显示目录下被进程占用的文件
      [root@cacti apache]# lsof +d /usr/local/
      COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
      mysqld_sa 4684 root cwd DIR 3,3 4096 4321224 /usr/local/mysql
      bash 7589 root cwd DIR 3,3 4096 4318820 /usr/local/apache
      lsof 7830 root cwd DIR 3,3 4096 4318820 /usr/local/apache
      lsof 7831 root cwd DIR 3,3 4096 4318820 /usr/local/apache
      [root@cacti apache]#


(5) lsof –p 进程号 看指定的进程号占用了哪些文件
      [root@cacti apache]# lsof -p 30472 |tail -10
      httpd 30472 daemon 1w CHR 1,3 1032 /dev/null
      httpd 30472 daemon 2w REG 3,3 90663 4351324 /usr/local/apache/logs/error_log
      httpd 30472 daemon 3u IPv6 9200 TCP *:http (LISTEN)
      httpd 30472 daemon 4u sock 0,5 9201 can't identify protocol
      httpd 30472 daemon 5r FIFO 0,6 9251 pipe
      httpd 30472 daemon 6w FIFO 0,6 9251 pipe
      httpd 30472 daemon 7w REG 3,3 892095 4351326 /usr/local/apache/logs/access_log
      httpd 30472 daemon 8w REG 3,3 90663 4351324 /usr/local/apache/logs/error_log
      httpd 30472 daemon 9r 0000 0,10 0 8818373 eventpoll
      httpd 30472 daemon 12u unix 0xe81e0e40 8819482 socket
      [root@cacti apache]# 
      
(6) lsof +|-r [t] 控制lsof不断重复执行,缺省是15s刷新 -r,lsof会永远不断的执行,
直到收到中断信号 +r,lsof会一直执行,直到没有档案被显示

(7) lsof -u username 以UID,列出打开的文件
      [root@cacti apache]# lsof -u mysql |tail -5
      mysqld 4787 mysql 112u unix 0xe6588040 8819476 /tmp/mysql.sock
      mysqld 4787 mysql 113u unix 0xd9fc8ac0 8819483 /tmp/mysql.sock
      mysqld 4787 mysql 114u REG 3,3 26 4745182 /usr/local/mysql/data/cacti/poller_time.MYD
      mysqld 4787 mysql 115u unix 0xe6588c80 8945697 /tmp/mysql.sock
      mysqld 4787 mysql 116u unix 0xe6588740 8945734 /tmp/mysql.sock
      [root@cacti apache]#
      

你可能感兴趣的:(apache,linux,mysql,tcp,command,系统监控)