运维神器——LSOF

Linux IT敢客 7个月前 (05-14) 2460次浏览 已收录 0个评论 扫描二维码

        因为实在是太喜欢 lsof 这个命令,所以就为这个命令 lsof 专门写一篇文章介绍一下,来让大伙瞧一瞧这个命令 lsof 的神器之处。
        lsof(list open files)是一个查看当前系统文件的工具。在 linux 环境下,任何事物都以文件的形式存在,用户通过文件不仅可以访问常规数据,还可以访问网络连接和硬件;如传输控制协议 (TCP) 和用户数据报协议 (UDP)套接字等,系统在后台都为该应用程序分配了一个文件描述符,该文件描述符提供了大量关于此应用程序的信息。
        我们用 losf -h 可以查看一下这个命令可以加哪些参数选项,当然,更详细的介绍可以 man lsof 看一下。

[root@Amber log]# lsof -h
lsof 4.87
 latest revision: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/
 latest FAQ: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/FAQ
 latest man page: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_man
 usage: [-?abhKlnNoOPRtUvVX] [+|-c c] [+|-d s] [+D D] [+|-f[gG]] [+|-e s]
 [-F [f]] [-g [s]] [-i [i]] [+|-L [l]] [+m [m]] [+|-M] [-o [o]] [-p s]
[+|-r [t]] [-s [p:s]] [-S [t]] [-T [t]] [-u s] [+|-w] [-x [fl]] [--] [names]
Defaults in parentheses; comma-separated set (s) items; dash-separated ranges.
  -?|-h list help          -a AND selections (OR)     -b avoid kernel blocks
  -c c  cmd c ^c /c/[bix]  +c w  COMMAND width (9)    +d s  dir s files
  -d s  select by FD set   +D D  dir D tree *SLOW?*   +|-e s  exempt s *RISKY*
  -i select IPv[46] files  -K list tasKs (threads)    -l list UID numbers
  -n no host names         -N select NFS files        -o list file offset
  -O no overhead *RISKY*   -P no port names           -R list paRent PID
  -s list file size        -t terse listing           -T disable TCP/TPI info
  -U select Unix socket    -v list version info       -V verbose search
  +|-w  Warnings (+)       -X skip TCP&UDP* files     -Z Z  context [Z]
  -- end option scan     
  +f|-f  +filesystem or -file names     +|-f[gG] flaGs 
  -F [f] select fields; -F? for help  
  +|-L [l] list (+) suppress (-) link counts < l (0 = all; default = 0)
                                        +m [m] use|create mount supplement
  +|-M   portMap registration (-)       -o o   o 0t offset digits (8)
  -p s   exclude(^)|select PIDs         -S [t] t second stat timeout (15)
  -T qs TCP/TPI Q,St (s) info
  -g [s] exclude(^)|select and print process group IDs
  -i i   select by IPv[46] address: [46][proto][@host|addr][:svc_list|port_list]
  +|-r [t[m<fmt>]] repeat every t seconds (15);  + until no files, - forever.
       An optional suffix to t is m<fmt>; m must separate t from <fmt> and
      <fmt> is an strftime(3) format for the marker line.
  -s p:s  exclude(^)|select protocol (p = TCP|UDP) states by name(s).
  -u s   exclude(^)|select login|UID set s
  -x [fl] cross over +d|+D File systems or symbolic Links
  names  select named files or files on named file systems
Anyone can list all files; /dev warnings disabled; kernel ID check disabled.

        下面我们主要介绍一些非要有用的选项:
1、-a:列出打开文件存在的进程;
比如简单的我们查看一下某个文件是被哪个进程所占用了,常见的就是分析日志了,突然发现某个日志巨大或者该日志是否有作用,可以用这个命令试一下;可以看出文件的具体路径是根据输入不同显示不同的。

[root@Amber log]# lsof -a pyitgank.log 
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF  NODE NAME
python  11576 root    1w   REG  253,1   117096 50736 pyitgank.log
python  11576 root    2w   REG  253,1   117096 50736 pyitgank.log
python  11579 root    1w   REG  253,1   117096 50736 pyitgank.log
python  11579 root    2w   REG  253,1   117096 50736 pyitgank.log
[root@Amber log]# lsof -a /data/www/log/pyitgank.log  
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF  NODE NAME
python  11576 root    1w   REG  253,1   117096 50736 /data/www/log/pyitgank.log
python  11576 root    2w   REG  253,1   117096 50736 /data/www/log/pyitgank.log
python  11579 root    1w   REG  253,1   117096 50736 /data/www/log/pyitgank.log
python  11579 root    2w   REG  253,1   117096 50736 /data/www/log/pyitgank.log

2、-i:列出符合条件的进程(4、6、协议、:端口、 @ip );
这个最常用的就是查看某个端口是哪个进程所占用的了

[root@Amber log]# lsof -i:80
COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
httpd   1896 apache    3u  IPv4 974593      0t0  TCP *:http (LISTEN)
httpd   2213 apache    3u  IPv4 974593      0t0  TCP *:http (LISTEN)
httpd   3044   root    3u  IPv4 974593      0t0  TCP *:http (LISTEN)
httpd   8534 apache    3u  IPv4 974593      0t0  TCP *:http (LISTEN)
httpd   9627 apache    3u  IPv4 974593      0t0  TCP *:http (LISTEN)

lsof -i 4 这个 4 表示 IPV4  6 就表示 IPV6

[root@Amber log]# lsof -i 4
COMMAND     PID   USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
systemd       1   root   45u  IPv4   11933      0t0  TCP *:sunrpc (LISTEN)
dhclient    688   root    6u  IPv4   13375      0t0  UDP *:bootpc 
dhclient    688   root   20u  IPv4   13348      0t0  UDP *:netmpi 
sshd        752   root    3u  IPv4   12839      0t0  TCP *:ms-olap1 (LISTEN)
httpd      1896 apache    3u  IPv4  974593      0t0  TCP *:http (LISTEN)
httpd      1896 apache    4u  IPv4  974610      0t0  TCP *:https (LISTEN)
httpd      1896 apache   28u  IPv4 6612346      0t0  TCP localhost:57000->localhost:commplex-main (CLOSE_WAIT)
httpd      1896 apache   30u  IPv4 6605919      0t0  TCP localhost:49910->localhost:intermapper (ESTABLISHED)
mindoc_li  2000   root    3u  IPv4 6457700      0t0  TCP localhost:44602->localhost:cogsys-lm (ESTABLISHED)
mindoc_li  2000   root    9u  IPv4 6599847      0t0  TCP localhost:50722->localhost:cogsys-lm (ESTABLISHED)
httpd      2213 apache    3u  IPv4  974593      0t0  TCP *:http (LISTEN)
httpd      2213 apache    4u  IPv4  974610      0t0  TCP *:https (LISTEN)
httpd      3044   root    3u  IPv4  974593      0t0  TCP *:http (LISTEN)
httpd      3044   root    4u  IPv4  974610      0t0  TCP *:https (LISTEN)
sshd       6490   root    3u  IPv4 6611341      0t0  TCP Amber:ms-olap1->101.95.173.162:54113 (ESTABLISHED)
httpd      8534 apache    3u  IPv4  974593      0t0  TCP *:http (LISTEN)
httpd      8534 apache    4u  IPv4  974610      0t0  TCP *:https (LISTEN)
httpd      8534 apache   26u  IPv4 6623918      0t0  TCP Amber:https->crawl-203-208-60-148.googlebot.com:40163 (ESTABLISHED)
httpd      8534 apache   30u  IPv4 6624540      0t0  TCP localhost:57366->localhost:commplex-main (ESTABLISHED)
httpd      9627 apache    3u  IPv4  974593      0t0  TCP *:http (LISTEN)
httpd      9627 apache    4u  IPv4  974610      0t0  TCP *:https (LISTEN)
httpd      9627 apache   28u  IPv4 6623323      0t0  TCP localhost:57312->localhost:commplex-main (CLOSE_WAIT)
goaccess   9965   root   24u  IPv4 6621890      0t0  TCP localhost:7890 (LISTEN)
python    11579   root    4u  IPv4 3434860      0t0  TCP localhost:irdmi (LISTEN)
dotnet    25234   root  164u  IPv4 5962915      0t0  TCP localhost:commplex-main (LISTEN)
dotnet    25234   root  171u  IPv4 6623798      0t0  TCP localhost:commplex-main->localhost:57366 (ESTABLISHED)
dotnet    25234   root  206u  IPv4 5963816      0t0  TCP localhost:43984->localhost:cogsys-lm (ESTABLISHED)
dotnet    25234   root  214u  IPv4 5962974      0t0  TCP localhost:54080->localhost:cogsys-lm (ESTABLISHED)
dotnet    25234   root  215u  IPv4 5962975      0t0  TCP localhost:57509->localhost:cogsys-lm (ESTABLISHED)
dotnet    25234   root  216u  IPv4 5962976      0t0  TCP localhost:36908->localhost:cogsys-lm (ESTABLISHED)
dotnet    25234   root  217u  IPv4 5962980      0t0  TCP localhost:36467->localhost:cogsys-lm (ESTABLISHED)
[root@Amber log]# lsof -i 6
COMMAND     PID  USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
dhclient    688  root   21u  IPv6   13349      0t0  UDP *:36145 
sshd        752  root    4u  IPv6   12841      0t0  TCP *:ms-olap1 (LISTEN)
mindoc_li  2000  root    5u  IPv6 6605920      0t0  TCP localhost:intermapper->localhost:49910 (ESTABLISHED)
mindoc_li  2000  root    6u  IPv6   80119      0t0  TCP *:intermapper (LISTEN)
mysqld    15375 mysql   20u  IPv6 3442054      0t0  TCP *:cogsys-lm (LISTEN)
mysqld    15375 mysql   27u  IPv6 5963824      0t0  TCP localhost:cogsys-lm->localhost:43984 (ESTABLISHED)
mysqld    15375 mysql   30u  IPv6 5963829      0t0  TCP localhost:cogsys-lm->localhost:54080 (ESTABLISHED)
mysqld    15375 mysql   32u  IPv6 5963833      0t0  TCP localhost:cogsys-lm->localhost:57509 (ESTABLISHED)
mysqld    15375 mysql   33u  IPv6 5963834      0t0  TCP localhost:cogsys-lm->localhost:36908 (ESTABLISHED)
mysqld    15375 mysql   38u  IPv6 5963835      0t0  TCP localhost:cogsys-lm->localhost:36467 (ESTABLISHED)
mysqld    15375 mysql   72u  IPv6 6457701      0t0  TCP localhost:cogsys-lm->localhost:44602 (ESTABLISHED)
mysqld    15375 mysql   75u  IPv6 6599848      0t0  TCP localhost:cogsys-lm->localhost:50722 (ESTABLISHED)

同样还可以跟 tcp 或者 udp 表示不同的协议,
然后如果要查找当前主机和某个 ip 的通信情况,可以 lsof -i @ip

[root@Amber log]# lsof -i @101.95.173.162
COMMAND  PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
sshd    6490 root    3u  IPv4 6611341      0t0  TCP Amber:ms-olap1->101.95.173.162:54113 (ESTABLISHED)

3、-c<进程名>:列出指定进程所打开的文件;

4、-g:列出 GID 号进程详情;

5、-d<文件号>:列出占用该文件号的进程;

6、+d<目录>:列出目录下被打开的文件;

7、+D<目录>:递归列出目录下被打开的文件;

8、-n<目录>:列出使用 NFS 的文件;

9、-p<进程号>:列出指定进程号所打开的文件;
往往有时候我们只知道进程的 pid,却不知道进程所在的目录,尤其是许多 java 进程,只是脚本 jar 包启动的,这时候这个命令就很有作用了,可以根据 pid 列出进程的所有打开文件信息,包括路径哦。

[root@Amber log]# lsof -p 2000
COMMAND    PID USER   FD      TYPE             DEVICE SIZE/OFF   NODE NAME
mindoc_li 2000 root  cwd       DIR              253,1     4096  50737 /data/www/book.itgank
mindoc_li 2000 root  rtd       DIR              253,1     4096      2 /
mindoc_li 2000 root  txt       REG              253,1 17635380  51548 /data/www/book.itgank/mindoc_linux_amd64
mindoc_li 2000 root  mem       REG              253,1  2127336 139995 /usr/lib64/libc-2.17.so
mindoc_li 2000 root  mem       REG              253,1   144792 140021 /usr/lib64/libpthread-2.17.so
mindoc_li 2000 root  mem       REG              253,1    19776 143495 /usr/lib64/libdl-2.17.so
mindoc_li 2000 root  mem       REG              253,1   164112 762184 /usr/lib64/ld-2.17.so
mindoc_li 2000 root    0r      CHR                1,3      0t0   1028 /dev/null
mindoc_li 2000 root    1u     unix 0xffff88007ba3e000      0t0  80107 socket
mindoc_li 2000 root    2u     unix 0xffff88007ba3e000      0t0  80107 socket
mindoc_li 2000 root    3u     IPv4            6457700      0t0    TCP localhost:44602->localhost:cogsys-lm (ESTABLISHED)
mindoc_li 2000 root    4u  a_inode                0,9        0   5883 [eventpoll]
mindoc_li 2000 root    6u     IPv6              80119      0t0    TCP *:intermapper (LISTEN)
mindoc_li 2000 root    7w      REG              253,1     7415  73736 /data/www/book.itgank/logs/log.log (deleted)
mindoc_li 2000 root    9u     IPv4            6599847      0t0    TCP localhost:50722->localhost:cogsys-lm (ESTABLISHED)

10、-u:列出 UID 号进程详情;

11、查看由登陆用户启动而非系统启动的进程:

命令: lsof /dev/pts/0,1,2 

[root@Amber log]# lsof /dev/pts/2
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
lsof      465 root    0u   CHR  136,2      0t0    5 /dev/pts/2
lsof      465 root    1u   CHR  136,2      0t0    5 /dev/pts/2
lsof      465 root    2u   CHR  136,2      0t0    5 /dev/pts/2
bash    32121 root    0u   CHR  136,2      0t0    5 /dev/pts/2
bash    32121 root    1u   CHR  136,2      0t0    5 /dev/pts/2
bash    32121 root    2u   CHR  136,2      0t0    5 /dev/pts/2
bash    32121 root  255u   CHR  136,2      0t0    5 /dev/pts/2

a. /dev/pts 是远程登陆(telnet,ssh 等)后创建的控制台设备文件所在的目录;

b. 第一个用户登陆,console 的设备文件为/dev/pts/0,第二个为/dev/pts/1,以此类推;

c. 通过查看/dev/pts 下的进程,我们将可以了解到由登陆用户启动而非系统启动的进程有哪些。

12、查看文件,设备被哪些进程占用:

命令:lsof /dev/tty1

[root@Amber log]# lsof /dev/tty1
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
agetty  1716 root    0u   CHR    4,1      0t0 1043 /dev/tty1
agetty  1716 root    1u   CHR    4,1      0t0 1043 /dev/tty1
agetty  1716 root    2u   CHR    4,1      0t0 1043 /dev/tty1

a. /dev/tty 就是当前进程的控制终端的设备特殊文件;

b. 通过查看/dev/tty 下文件可以知道文件、设备的进程占用情况。

13、查看指定程序打开的文件

命令:lsof -c sshd

运维神器——LSOF

14、查看指定用户打开的文件

命令:lsof -u root | more 

运维神器——LSOF

15、查看指定目录下被打开的文件

命令:lsof +D /data/www/log/ 或 lsof +d /data/www/log/

[root@Amber log]# lsof +D /data/www/log/
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF  NODE NAME
sh          351 root  255r   REG  253,1      485 50734 /data/www/log/loggo.sh
lsof       1260 root  cwd    DIR  253,1     4096 49206 /data/www/log
lsof       1261 root  cwd    DIR  253,1     4096 49206 /data/www/log
rotatelog  1906 root    3w   REG  253,1       81 49235 /data/www/log/2018_05_14_error.log
rotatelog  1912 root    3w   REG  253,1    82245 50752 /data/www/log/2018_05_14_www.itgank.com-error.log
rotatelog  1917 root    3w   REG  253,1     1190 51549 /data/www/log/2018_05_14_example.com-error.log
rotatelog  1919 root    3w   REG  253,1    12169 50753 /data/www/log/2018_05_14_www.uimoe.com-access.log
rotatelog  1924 root    3w   REG  253,1   386444 50740 /data/www/log/2018_05_14_www.itgank.com-access.log
rotatelog  1925 root    4w   REG  253,1       73 49227 /data/www/log/2018_05_14_xcx.itgank.com-access.log
rotatelog  1926 root    3w   REG  253,1    12169 50753 /data/www/log/2018_05_14_www.uimoe.com-access.log
rotatelog  1929 root    4w   REG  253,1       74 49231 /data/www/log/2018_05_14_python.itgank.com-access.log
rotatelog  1930 root    3w   REG  253,1      517 51554 /data/www/log/2018_05_14_resume.itgank.com-access.log
rotatelog  1931 root    3w   REG  253,1      408 49216 /data/www/log/2018_05_14_datag.itgank.com-access.log
rotatelog  1932 root    3w   REG  253,1   386444 50740 /data/www/log/2018_05_14_www.itgank.com-access.log
rotatelog  1933 root    3w   REG  253,1     8994 50756 /data/www/log/2018_05_14_www.geroro.com-access.log
rotatelog  1934 root    4w   REG  253,1     2838 51552 /data/www/log/2018_05_14_book.itgank.com-access.log
rotatelog  1935 root    3w   REG  253,1    10978 50755 /data/www/log/2018_05_14_example.com-access.log
dotnet    11235 root    1w   REG  253,1   134515 50735 /data/www/log/uimoe.com.log
dotnet    11235 root    2w   REG  253,1   134515 50735 /data/www/log/uimoe.com.log
dotnet    11235 root    8w   REG  253,1   134515 50735 /data/www/log/uimoe.com.log
dotnet    11235 root    9w   REG  253,1   134515 50735 /data/www/log/uimoe.com.log
dotnet    11235 root  148w   REG  253,1   134515 50735 /data/www/log/uimoe.com.log
python    11576 root    1w   REG  253,1   117145 50736 /data/www/log/pyitgank.log
python    11576 root    2w   REG  253,1   117145 50736 /data/www/log/pyitgank.log
python    11579 root    1w   REG  253,1   117145 50736 /data/www/log/pyitgank.log
python    11579 root    2w   REG  253,1   117145 50736 /data/www/log/pyitgank.log
bash      32121 root  cwd    DIR  253,1     4096 49206 /data/www/log
[root@Amber log]# lsof +d /data/www/log/
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF  NODE NAME
sh          351 root  255r   REG  253,1      485 50734 /data/www/log/loggo.sh
lsof       1295 root  cwd    DIR  253,1     4096 49206 /data/www/log
lsof       1296 root  cwd    DIR  253,1     4096 49206 /data/www/log
rotatelog  1906 root    3w   REG  253,1       81 49235 /data/www/log/2018_05_14_error.log
rotatelog  1912 root    3w   REG  253,1    82245 50752 /data/www/log/2018_05_14_www.itgank.com-error.log
rotatelog  1917 root    3w   REG  253,1     1190 51549 /data/www/log/2018_05_14_example.com-error.log
rotatelog  1919 root    3w   REG  253,1    12169 50753 /data/www/log/2018_05_14_www.uimoe.com-access.log
rotatelog  1924 root    3w   REG  253,1   386721 50740 /data/www/log/2018_05_14_www.itgank.com-access.log
rotatelog  1925 root    4w   REG  253,1       73 49227 /data/www/log/2018_05_14_xcx.itgank.com-access.log
rotatelog  1926 root    3w   REG  253,1    12169 50753 /data/www/log/2018_05_14_www.uimoe.com-access.log
rotatelog  1929 root    4w   REG  253,1       74 49231 /data/www/log/2018_05_14_python.itgank.com-access.log
rotatelog  1930 root    3w   REG  253,1      517 51554 /data/www/log/2018_05_14_resume.itgank.com-access.log
rotatelog  1931 root    3w   REG  253,1      408 49216 /data/www/log/2018_05_14_datag.itgank.com-access.log
rotatelog  1932 root    3w   REG  253,1   386721 50740 /data/www/log/2018_05_14_www.itgank.com-access.log
rotatelog  1933 root    3w   REG  253,1     8994 50756 /data/www/log/2018_05_14_www.geroro.com-access.log
rotatelog  1934 root    4w   REG  253,1     2838 51552 /data/www/log/2018_05_14_book.itgank.com-access.log
rotatelog  1935 root    3w   REG  253,1    11037 50755 /data/www/log/2018_05_14_example.com-access.log
dotnet    11235 root    1w   REG  253,1   134515 50735 /data/www/log/uimoe.com.log
dotnet    11235 root    2w   REG  253,1   134515 50735 /data/www/log/uimoe.com.log
dotnet    11235 root    8w   REG  253,1   134515 50735 /data/www/log/uimoe.com.log
dotnet    11235 root    9w   REG  253,1   134515 50735 /data/www/log/uimoe.com.log
dotnet    11235 root  148w   REG  253,1   134515 50735 /data/www/log/uimoe.com.log
python    11576 root    1w   REG  253,1   117145 50736 /data/www/log/pyitgank.log
python    11576 root    2w   REG  253,1   117145 50736 /data/www/log/pyitgank.log
python    11579 root    1w   REG  253,1   117145 50736 /data/www/log/pyitgank.log
python    11579 root    2w   REG  253,1   117145 50736 /data/www/log/pyitgank.log
bash      32121 root  cwd    DIR  253,1     4096 49206 /data/www/log

参数+D 为递归列出/home/下被打开的文件,参数+d 为列出/home/下被打开的文件。

 

16、查看指定进程打开的网络连接

命令:lsof -i -a -p 2000 

[root@Amber log]# lsof -i -a -p 2000
COMMAND    PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
mindoc_li 2000 root    3u  IPv4 6457700      0t0  TCP localhost:44602->localhost:cogsys-lm (ESTABLISHED)
mindoc_li 2000 root    6u  IPv6   80119      0t0  TCP *:intermapper (LISTEN)
mindoc_li 2000 root    9u  IPv4 6599847      0t0  TCP localhost:50722->localhost:cogsys-lm (ESTABLISHED)

使用了参数-i、-a、-p 等,-i 查看网络连接情况,-a 查看存在的进程,-p 指定进程。

17、查找误删除的文件而进程还在使用的文件

命令:lsof |grep -i deleted 

[root@Amber log]# lsof |grep -i deleted
systemd-j   338                 root  txt       REG              253,1    274752     143274 /usr/lib/systemd/systemd-journald;5aeff033 (deleted)
systemd-l   477                 root  txt       REG              253,1    572320     143275 /usr/lib/systemd/systemd-logind;5aeff033 (deleted)
dhclient    688                 root  txt       REG              253,1    424312     143131 /usr/sbin/dhclient;5aeff033 (deleted)
httpd      1074               apache   76u      REG              253,1         0     491535 /tmp/.ZendSem.AyGvqX (deleted)
httpd      1074  1075         apache   76u      REG              253,1         0     491535 /tmp/.ZendSem.AyGvqX (deleted)
httpd      1074  1076         apache   76u      REG              253,1         0     491535 /tmp/.ZendSem.AyGvqX (deleted)
httpd      1074  1077         apache   76u      REG              253,1         0     491535 /tmp/.ZendSem.AyGvqX (deleted)
httpd      1074  1078         apache   76u      REG              253,1         0     491535 /tmp/.ZendSem.AyGvqX (deleted)
httpd      1074  1079         apache   76u      REG              253,1         0     491535 /tmp/.ZendSem.AyGvqX (deleted)
httpd      1074  1080         apache   76u      REG              253,1         0     491535 /tmp/.ZendSem.AyGvqX (deleted)
httpd      1074  1081         apache   76u      REG              253,1         0     491535 /tmp/.ZendSem.AyGvqX (deleted)
httpd      1074  1082         apache   76u      REG              253,1         0     491535 /tmp/.ZendSem.AyGvqX (deleted)

之前的文章介绍过怎么恢复磁盘空间已经恢复误删除的文件。

运维神坑记——空间满了,日志删除了,空间竟未释放?

 

Linux 系统下误删文件,使用 debugfs 恢复


详细说明

1、lsof 输出各列信息的意义,如下:

COMMAND:进程的名称;

PID:进程标识符;

PPID:父进程标识符(需要指定-R 参数);

USER:进程所有者;

PGID:进程所属组;

FD:文件描述符,应用程序通过文件描述符识别该文件。

2、文件描述符列表:

①. cwd:表示 current work dirctory,即:应用程序的当前工作目录,这是该应用程序启动的目录,除非它本身对这个目录进行更改;

②. txt:该类型的文件是程序代码,如应用程序二进制文件本身或共享库,如上列表中显示的 /sbin/init 程序;

③. lnn:library references (AIX);

④. er:FD information error (see NAME column);

⑤. jld:jail directory (FreeBSD);

⑥. ltx:shared library text (code and data);

⑦. mxx :hex memory-mapped type number xx.

⑧. m86:DOS Merge mapped file;

⑨. mem:memory-mapped file;

⑩. mmap:memory-mapped device;

⑪. pd:parent directory;

⑫. rtd:root directory;

⑬. tr:kernel trace file (OpenBSD);

⑭. v86 VP/ix mapped file;

⑮. 0:表示标准输出;

⑯. 1:表示标准输入;

⑰. 2:表示标准错误。

3、一般在标准输出、标准错误、标准输入后,还跟着文件状态模式:

①.u:表示该文件被打开并处于读取/写入模式;

②.r:表示该文件被打开并处于只读模式;

③.w:表示该文件被打开并处于只写模式;

④.空格:表示该文件的状态模式为 unknow,且没有锁定;

⑤.-:表示该文件的状态模式为 unknow,且被锁定。

4、同时在文件状态模式后面,还跟着相关的锁:

①. N:for a Solaris NFS lock of unknown type;

②. r:for read lock on part of the file;

③. R:for a read lock on the entire file;

④. w:for a write lock on part of the file;(文件的部分写锁)

⑤. W:for a write lock on the entire file;(整个文件的写锁)

⑥. u:for a read and write lock of any length;

⑦. U:for a lock of unknown type;

⑧. x:for an SCO OpenServer Xenix lock on part of the file;

⑨. X:for an SCO OpenServer Xenix lock on the entire file;

⑩. space:if there is no lock。

5、文件类型

①. DIR:表示目录;

②. CHR:表示字符类型;

③. BLK:块设备类型;

④. UNIX:UNIX 域套接字;

⑤. FIFO:先进先出 (FIFO) 队列;

⑥. IPv4:网际协议 (IP) 套接字;

⑦. DEVICE:指定磁盘的名称;

⑧. SIZE:文件的大小;

⑨. NODE:索引节点(文件在磁盘上的标识);

⑩. NAME:打开文件的确切名称。

三、可打开文件

①. 普通文件;

②. 目录;

③. 网络文件系统的文件;

④. 字符或设备文件;

⑤. (函数)共享库;

⑥. 管道,命名管道;

⑦. 符号链接;

⑧. 网络文件(例如:NFS file、网络 socket,unix 域名 socket);

⑨. 其它类型的文件等。

 

Linux 大量使用了文件,作为系统管理员,lsof 允许用户对核心内存进行查看,以找出系统当前如何使用这些文件。lsof 的简单用法可以告诉用户哪些进程打开了哪些文件,以及哪些文件由哪些进程打开。

在收集关于应用程序工作情况的信息时,或在进行某些可能损坏数据的操作前,要确保文件未被使用,这一点特别重要。lsof 更高级的用法可以帮助用户查找删除的文件,并获得关于网络连接的信息。lsof 是一个功能强大的工具,它几乎可以用于任何地方。

 


IT 敢客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:运维神器——LSOF
喜欢 (8)
[313176056@qq.com]
分享 (0)
IT敢客
关于作者:
“我所做的一切都是为了方便我的生活~~~“
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址