L75.linux命令每日一练 -- 第11章 Linux系统管理命令 -- lsof和uptime

11.1 lsof:查看进程打开的文件

11.1.1 命令详解

【命令星级】 ★★★★★

【功能说明】

​ lsof全名为list open files,也就是列举系统中已经被打开的文件,通过lsof命令,就可以根据文件找到对应的进程信息,也可以根据进程信息找到进程打开的文件。

【语法格式】

lsof [option]
lsof [选项]

​ **说明:**在lsof命令及后面的选项里,每个元素之间都至少要有一个空格。

【选项说明】

​ 表11-1针对该命令的参数选项进行了说明。

​ 表11-1 lsof命令的参数选项及说明
在这里插入图片描述

11.1.2 使用范例

​ **范例11-1:**显示使用文件的进程。

[root@centos7 ~]# lsof /var/log/messages
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
abrt-watc  928 root    4r   REG    8,3   407602 16881451 /var/log/messages
rsyslogd  1390 root    7w   REG    8,3   407602 16881451 /var/log/messages

​ 如果想知道某个特定的文件是由哪个进程在使用,就可以通过“lsof 文件名”的方式来得到。从上面的输出可以得知,/var/log/messages文件是由rsyslogd进程在使用。

​ 输出中每列的含义具体如下。

  • COMMAND:命令,进程的名称。
  • PID:进程号。
  • USER:进程的所有者。
  • FD:文件描述符,它又包含如下内容。
  • 0:表示标准输出。
  • 1:表示标志输入。
  • 2:表示标准错误。
  • u:表示该文件被打开并处于读取/写入模式。
  • r:表示该文件被打开并处于只读模式。
  • w:表示该文件被打开并处于写入模式。
  • TYPE:文件类型,REG(regular)为普通文件。
  • DEVICE:指定磁盘的名称。
  • SIZE/OFF:文件的大小。
  • NODE:索引节点。
  • NAME:文件名称。

​ **范例11-2:**显示指定进程所打开的文件。

[root@centos7 ~]# lsof -c rsyslog	#使用-c选项显示指定进程所打开的文件。
COMMAND   PID USER   FD      TYPE             DEVICE SIZE/OFF     NODE NAME
rsyslogd 1390 root  cwd       DIR                8,3      224       64 /
rsyslogd 1390 root  rtd       DIR                8,3      224       64 /
rsyslogd 1390 root  txt       REG                8,3   664024     3521 /usr/sbin/rsyslogd
rsyslogd 1390 root  mem       REG               0,20  6373376     9224 /run/log/journal/718bcb547ced43efa48829fbb5b967ea/system.journal
rsyslogd 1390 root  mem       REG                8,3   402384    88056 /usr/lib64/libpcre.so.1.2.0
rsyslogd 1390 root  mem       REG                8,3    19384   117115 /usr/lib64/libgpg-error.so.0.10.0
rsyslogd 1390 root  mem       REG                8,3   535064   117118 /usr/lib64/libgcrypt.so.11.8.2
rsyslogd 1390 root  mem       REG                8,3    85968   172639 /usr/lib64/liblz4.so.1.7.5
rsyslogd 1390 root  mem       REG                8,3   155744   117058 /usr/lib64/libselinux.so.1
rsyslogd 1390 root  mem       REG                8,3   203688    14100 /usr/lib64/libsystemd.so.0.6.0
rsyslogd 1390 root  mem       REG                8,3    25024 34856463 /usr/lib64/rsyslog/imjournal.so
rsyslogd 1390 root  mem       REG                8,3    38048 34856471 /usr/lib64/rsyslog/imuxsock.so
rsyslogd 1390 root  mem       REG                8,3    68192   117078 /usr/lib64/libbz2.so.1.0.6
rsyslogd 1390 root  mem       REG                8,3   157424   117069 /usr/lib64/liblzma.so.5.2.2
rsyslogd 1390 root  mem       REG                8,3    99952   117072 /usr/lib64/libelf-0.176.so
rsyslogd 1390 root  mem       REG                8,3    19896   124712 /usr/lib64/libattr.so.1.1.0
rsyslogd 1390 root  mem       REG                8,3   338672   737373 /usr/lib64/libdw-0.176.so
rsyslogd 1390 root  mem       REG                8,3  1136944    73075 /usr/lib64/libm-2.17.so
rsyslogd 1390 root  mem       REG                8,3    20048   124716 /usr/lib64/libcap.so.2.22
rsyslogd 1390 root  mem       REG                8,3    86464    14084 /usr/lib64/libnss_myhostname.so.2
rsyslogd 1390 root  mem       REG                8,3   109976    84231 /usr/lib64/libresolv-2.17.so
rsyslogd 1390 root  mem       REG                8,3    31344    73083 /usr/lib64/libnss_dns-2.17.so
rsyslogd 1390 root  mem       REG                8,3    61560    73085 /usr/lib64/libnss_files-2.17.so
rsyslogd 1390 root  mem       REG                8,3    24432 33575387 /usr/lib64/rsyslog/lmnet.so
rsyslogd 1390 root  mem       REG                8,3  2156240    73067 /usr/lib64/libc-2.17.so
rsyslogd 1390 root  mem       REG                8,3    88776       84 /usr/lib64/libgcc_s-4.8.5-20150702.so.1
rsyslogd 1390 root  mem       REG                8,3    20064   117089 /usr/lib64/libuuid.so.1.3.0
rsyslogd 1390 root  mem       REG                8,3    40896   718789 /usr/lib64/libfastjson.so.4.0.0
rsyslogd 1390 root  mem       REG                8,3    15424   718800 /usr/lib64/libestr.so.0.0.0
rsyslogd 1390 root  mem       REG                8,3    43712    84233 /usr/lib64/librt-2.17.so
rsyslogd 1390 root  mem       REG                8,3    19248    73073 /usr/lib64/libdl-2.17.so
rsyslogd 1390 root  mem       REG                8,3   142144    84229 /usr/lib64/libpthread-2.17.so
rsyslogd 1390 root  mem       REG                8,3    90248   117061 /usr/lib64/libz.so.1.2.7
rsyslogd 1390 root  mem       REG                8,3   163312    73060 /usr/lib64/ld-2.17.so
rsyslogd 1390 root    0r      CHR                1,3      0t0     6513 /dev/null
rsyslogd 1390 root    1w      CHR                1,3      0t0     6513 /dev/null
rsyslogd 1390 root    2w      CHR                1,3      0t0     6513 /dev/null
rsyslogd 1390 root    3r  a_inode               0,10        0     6509 inotify
rsyslogd 1390 root    4u     unix 0xffff8e1679a3ee80      0t0    22659 socket
rsyslogd 1390 root    5r      REG               0,20  6373376     9224 /run/log/journal/718bcb547ced43efa48829fbb5b967ea/system.journal
rsyslogd 1390 root    6w      REG                8,3    11331 16881448 /var/log/cron
rsyslogd 1390 root    7w      REG                8,3   407668 16881451 /var/log/messages
rsyslogd 1390 root    8w      REG                8,3     6281 16881452 /var/log/secure
rsyslogd 1390 root    9w      REG                8,3     4058 16881449 /var/log/maillog

​ **范例11-3:**显示指定进程号所打开的文件。

[root@centos7 ~]# lsof -p 1390	#使用-p选项显示指定进程号所打开的文件。
COMMAND   PID USER   FD      TYPE             DEVICE SIZE/OFF     NODE NAME
rsyslogd 1390 root  cwd       DIR                8,3      224       64 /
rsyslogd 1390 root  rtd       DIR                8,3      224       64 /
rsyslogd 1390 root  txt       REG                8,3   664024     3521 /usr/sbin/rsyslogd
rsyslogd 1390 root  mem       REG               0,20  6373376     9224 /run/log/journal/718bcb547ced43efa48829fbb5b967ea/system.journal
rsyslogd 1390 root  mem       REG                8,3   402384    88056 /usr/lib64/libpcre.so.1.2.0
rsyslogd 1390 root  mem       REG                8,3    19384   117115 /usr/lib64/libgpg-error.so.0.10.0
rsyslogd 1390 root  mem       REG                8,3   535064   117118 /usr/lib64/libgcrypt.so.11.8.2
rsyslogd 1390 root  mem       REG                8,3    85968   172639 /usr/lib64/liblz4.so.1.7.5
rsyslogd 1390 root  mem       REG                8,3   155744   117058 /usr/lib64/libselinux.so.1
rsyslogd 1390 root  mem       REG                8,3   203688    14100 /usr/lib64/libsystemd.so.0.6.0
rsyslogd 1390 root  mem       REG                8,3    25024 34856463 /usr/lib64/rsyslog/imjournal.so
rsyslogd 1390 root  mem       REG                8,3    38048 34856471 /usr/lib64/rsyslog/imuxsock.so
rsyslogd 1390 root  mem       REG                8,3    68192   117078 /usr/lib64/libbz2.so.1.0.6
rsyslogd 1390 root  mem       REG                8,3   157424   117069 /usr/lib64/liblzma.so.5.2.2
rsyslogd 1390 root  mem       REG                8,3    99952   117072 /usr/lib64/libelf-0.176.so
rsyslogd 1390 root  mem       REG                8,3    19896   124712 /usr/lib64/libattr.so.1.1.0
rsyslogd 1390 root  mem       REG                8,3   338672   737373 /usr/lib64/libdw-0.176.so
rsyslogd 1390 root  mem       REG                8,3  1136944    73075 /usr/lib64/libm-2.17.so
rsyslogd 1390 root  mem       REG                8,3    20048   124716 /usr/lib64/libcap.so.2.22
rsyslogd 1390 root  mem       REG                8,3    86464    14084 /usr/lib64/libnss_myhostname.so.2
rsyslogd 1390 root  mem       REG                8,3   109976    84231 /usr/lib64/libresolv-2.17.so
rsyslogd 1390 root  mem       REG                8,3    31344    73083 /usr/lib64/libnss_dns-2.17.so
rsyslogd 1390 root  mem       REG                8,3    61560    73085 /usr/lib64/libnss_files-2.17.so
rsyslogd 1390 root  mem       REG                8,3    24432 33575387 /usr/lib64/rsyslog/lmnet.so
rsyslogd 1390 root  mem       REG                8,3  2156240    73067 /usr/lib64/libc-2.17.so
rsyslogd 1390 root  mem       REG                8,3    88776       84 /usr/lib64/libgcc_s-4.8.5-20150702.so.1
rsyslogd 1390 root  mem       REG                8,3    20064   117089 /usr/lib64/libuuid.so.1.3.0
rsyslogd 1390 root  mem       REG                8,3    40896   718789 /usr/lib64/libfastjson.so.4.0.0
rsyslogd 1390 root  mem       REG                8,3    15424   718800 /usr/lib64/libestr.so.0.0.0
rsyslogd 1390 root  mem       REG                8,3    43712    84233 /usr/lib64/librt-2.17.so
rsyslogd 1390 root  mem       REG                8,3    19248    73073 /usr/lib64/libdl-2.17.so
rsyslogd 1390 root  mem       REG                8,3   142144    84229 /usr/lib64/libpthread-2.17.so
rsyslogd 1390 root  mem       REG                8,3    90248   117061 /usr/lib64/libz.so.1.2.7
rsyslogd 1390 root  mem       REG                8,3   163312    73060 /usr/lib64/ld-2.17.so
rsyslogd 1390 root    0r      CHR                1,3      0t0     6513 /dev/null
rsyslogd 1390 root    1w      CHR                1,3      0t0     6513 /dev/null
rsyslogd 1390 root    2w      CHR                1,3      0t0     6513 /dev/null
rsyslogd 1390 root    3r  a_inode               0,10        0     6509 inotify
rsyslogd 1390 root    4u     unix 0xffff8e1679a3ee80      0t0    22659 socket
rsyslogd 1390 root    5r      REG               0,20  6373376     9224 /run/log/journal/718bcb547ced43efa48829fbb5b967ea/system.journal
rsyslogd 1390 root    6w      REG                8,3    11331 16881448 /var/log/cron
rsyslogd 1390 root    7w      REG                8,3   407668 16881451 /var/log/messages
rsyslogd 1390 root    8w      REG                8,3     6281 16881452 /var/log/secure
rsyslogd 1390 root    9w      REG                8,3     4058 16881449 /var/log/maillog

​ **范例11-4:**监听指定的协议、端口和主机等信息,显示符合条件的进程信息。

​ 在讲解范例之前,我们先来看看相应的语法格式:

lsof -i [46] [protocol] [@hostname] [:service|port]

​ 其中各项的含义如下:

  • 46:4代表IPv4,6代表IPv6。
  • protocol:传输协议,可以是TCP或UDP。
  • hostname:主机名称或者IP地址。
  • service:进程的服务名,例如NFS、SSH和FTP等。
  • port:系统中与服务对应的端口号。例如HTTP服务默认对应的端口号为80,SSH服务默认对应的端口号为22。

​ 了解了语法格式之后,再来看看范例的解答。

[root@centos7 ~]# lsof -i	#查看所有进程。
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1389 root    3u  IPv4  22479      0t0  TCP *:ssh (LISTEN)
sshd    1389 root    4u  IPv6  22488      0t0  TCP *:ssh (LISTEN)
master  1483 root   13u  IPv4  23037      0t0  TCP localhost:smtp (LISTEN)
master  1483 root   14u  IPv6  23038      0t0  TCP localhost:smtp (LISTEN)
sshd    1632 root    3u  IPv4  23267      0t0  TCP centos7:ssh->10.0.0.1:50515 (ESTABLISHED)
sshd    2538 root    3u  IPv4  52664      0t0  TCP centos7:ssh->10.0.0.1:58912 (ESTABLISHED)
[root@centos7 ~]# lsof -i tcp	#显示所有TCP网络连接的进程信息。
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1389 root    3u  IPv4  22479      0t0  TCP *:ssh (LISTEN)
sshd    1389 root    4u  IPv6  22488      0t0  TCP *:ssh (LISTEN)
master  1483 root   13u  IPv4  23037      0t0  TCP localhost:smtp (LISTEN)
master  1483 root   14u  IPv6  23038      0t0  TCP localhost:smtp (LISTEN)
sshd    1632 root    3u  IPv4  23267      0t0  TCP centos7:ssh->10.0.0.1:50515 (ESTABLISHED)
sshd    2538 root    3u  IPv4  52664      0t0  TCP centos7:ssh->10.0.0.1:58912 (ESTABLISHED)
[root@centos7 ~]# lsof -i :22	#显示端口为22的进程,这条命令很常用。
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1389 root    3u  IPv4  22479      0t0  TCP *:ssh (LISTEN)
sshd    1389 root    4u  IPv6  22488      0t0  TCP *:ssh (LISTEN)
sshd    1632 root    3u  IPv4  23267      0t0  TCP centos7:ssh->10.0.0.1:50515 (ESTABLISHED)
sshd    2538 root    3u  IPv4  52664      0t0  TCP centos7:ssh->10.0.0.1:58912 (ESTABLISHED)
[root@centos7 ~]# lsof -i tcp:22	#心事同时满足TCP和端口号为22的进程。
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1389 root    3u  IPv4  22479      0t0  TCP *:ssh (LISTEN)
sshd    1389 root    4u  IPv6  22488      0t0  TCP *:ssh (LISTEN)
sshd    1632 root    3u  IPv4  23267      0t0  TCP centos7:ssh->10.0.0.1:50515 (ESTABLISHED)
sshd    2538 root    3u  IPv4  52664      0t0  TCP centos7:ssh->10.0.0.1:58912 (ESTABLISHED)

​ **范例11-5:**显示指定用户使用的文件。

[root@centos7 ~]# lsof -u root	#使用-u选项显示root用户使用的文件。
COMMAND    PID USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
systemd      1 root  cwd       DIR                8,3       224         64 /
systemd      1 root  rtd       DIR                8,3       224         64 /
systemd      1 root  txt       REG                8,3   1628608   16936312 /usr/lib/systemd/systemd
systemd      1 root  mem       REG                8,3     20064     117089 /usr/lib64/libuuid.so.1.3.0
systemd      1 root  mem       REG                8,3    265576     663557 /usr/lib64/libblkid.so.1.1.0
systemd      1 root  mem       REG                8,3     90248     117061 /usr/lib64/libz.so.1.2.7
systemd      1 root  mem       REG                8,3    157424     117069 /usr/lib64/liblzma.so.5.2.2
systemd      1 root  mem       REG                8,3     23968     134486 /usr/lib64/libcap-ng.so.0.0.0
systemd      1 root  mem       REG                8,3     19896     124712 /usr/lib64/libattr.so.1.1.0
...
lsof      2808 root  mem       REG                8,3    155744     117058 /usr/lib64/libselinux.so.1
lsof      2808 root  mem       REG                8,3    163312      73060 /usr/lib64/ld-2.17.so
lsof      2808 root    4r     FIFO                0,9       0t0      68365 pipe
lsof      2808 root    7w     FIFO                0,9       0t0      68366 pipe

​ **范例11-6:**显示所有socket文件。

[root@centos7 ~]# lsof -U	#使用-U选项显示所有socket文件。
COMMAND    PID    USER   FD   TYPE             DEVICE SIZE/OFF  NODE NAME
systemd      1    root   12u  unix 0xffff8e167b5c5940      0t0 13269 /run/systemd/private
systemd      1    root   15u  unix 0xffff8e1679622ec0      0t0 19830 /run/systemd/journal/stdout
systemd      1    root   16u  unix 0xffff8e1679a3e600      0t0 22153 /run/systemd/journal/stdout
systemd      1    root   21u  unix 0xffff8e167b5c5500      0t0 13398 /run/udev/control
systemd      1    root   22u  unix 0xffff8e167b5c1dc0      0t0 13408 /run/systemd/shutdownd
systemd      1    root   23u  unix 0xffff8e167b5c0440      0t0  8965 /run/systemd/notify
systemd      1    root   24u  unix 0xffff8e167b5c0880      0t0  8967 /run/systemd/cgroups-agent
systemd      1    root   28u  unix 0xffff8e167b5c1100      0t0  8975 /run/systemd/journal/stdout
systemd      1    root   29u  unix 0xffff8e167b5c1540      0t0  8978 /run/systemd/journal/socket
systemd      1    root   30u  unix 0xffff8e167b5c1980      0t0  8980 /dev/log
systemd      1    root   32u  unix 0xffff8e1679a39dc0      0t0 13896 socket
systemd      1    root   33u  unix 0xffff8e1679a38880      0t0 14155 /run/systemd/journal/stdout
systemd      1    root   35u  unix 0xffff8e1679a3c400      0t0 18390 /run/dbus/system_bus_socket
systemd      1    root   36u  unix 0xffff8e1679a3fb40      0t0 18810 socket
systemd      1    root   37u  unix 0xffff8e1679a3c840      0t0 18440 /run/systemd/journal/stdout
...
sshd      2538    root    4u  unix 0xffff8e16401cbfc0      0t0 52760 socket
pickup    2671 postfix    5u  unix 0xffff8e1679624400      0t0 23043 socket
pickup    2671 postfix    6u  unix 0xffff8e1679a38440      0t0 23041 public/pickup
pickup    2671 postfix    7u  unix 0xffff8e16401c8cc0      0t0 60578 socket

11.2 uptime:显示系统的运行时间及负载

11.2.1 命令详解

【命令星级】 ★★★☆☆

【功能说明】

​ uptime命令可以输出当前系统时间、系统开机到现在的运行世界、目前有多少用户在线和系统平均负载等信息。

【语法格式】

uptime 

​ **说明:**直接执行uptime命令即可。

11.2.2 使用范例

​ **范例11-7:**显示系统的运行时间及负载信息。

[root@centos7 ~]# uptime
 19:52:31 up  6:04,  2 users,  load average: 0.00, 0.01, 0.05
 系统时间       运行时长  登录用户数  平均负载      1min  5min  15min

​ uptime命令可以从下面2个文件中读取信息。

从/var/run/uptime中读取用户登录信息。
从/proc中读取进程信息。

猜你喜欢

转载自blog.csdn.net/qq_25599925/article/details/126541747