zoukankan      html  css  js  c++  java
  • Linux进程管理 lsof命令:列出进程调用或打开的文件信息

    lsof命令

    通过 ps 命令查询到系统中所有的进程, 通过lsof 命令可以知道这个进程到底在调用哪些文件。lsof 命令格式如下:

    [root@localhost ~]# lsof [选项]

    选项:

    • -c 字符串: 只列出以字符串开头的进程打开的文件;
    • +d 目录名: 列出某个目录中所有被进程调用的文件;
    • -u 用户名: 只列出某个用户的进程打开的文件;
    • -p pid: 列出某个 PID 进程打开的文件;

    查询系统中所有进程调用的文件

    [root@localhost ~]# lsof |more
    COMMAND     PID  TID           USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
    systemd       1                root  cwd       DIR              253,0      4096          2 /
    systemd       1                root  rtd       DIR              253,0      4096          2 /
    systemd       1                root  txt       REG              253,0   1489960     405924 /usr/lib/systemd/systemd
    systemd       1                root  mem       REG              253,0     20032     398342 /usr/lib64/libuuid.so.1.3.0

     按照 PID,从 1 号进程开始列出系统中所有的进程正在调用的文件名。

    查询某个文件被哪个进程调用

    [root@localhost ~]# lsof /usr/lib/systemd/systemd
    COMMAND PID USER  FD   TYPE DEVICE SIZE/OFF   NODE NAME
    systemd   1 root txt    REG  253,0  1489960 405924 /usr/lib/systemd/systemd

    lsof 命令也可以查询某个文件被哪个进程调用。

    查询某个目录下所有的文件是被哪些进程调用的

    [root@localhost ~]# lsof +d /usr/lib
    COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
    rpc.idmap 1196 root mem REG 83 26400 279930   /usr/lib/libnfsidmap.so.0.3.0
    rpc.idmap 1196 root mem REG 83 108948 276696  /usr/lib/libevent-1.4.so.2.1.3
    avahi-dae 1240 avahi mem REG 83 49124 271310  /usr/lib/libavahi-common.so.3.5.1
    avahi-dae 1240 avahi mem REG 83 23904 283188  /usr/lib/libdaemon.so.0.5.0
    avahi-dae 1240 avahi mem REG 83 227212 268396 /usr/lib/libavahi-core.so.6.0.1
    avahi-dae 1241 avahi mem REG 83 49124 271310  /usr/lib/libavahi-common.so.3.5.1
    avahi-dae 1241 avahi mem REG 83 23904 283188  /usr/lib/libdaemon.so.0.5.0
    avahi-dae 1241 avahi mem REG 83 227212 268396 /usr/lib/libavahi-core.so.6.0.1
    cupsd 1251 root mem REG 83 69564 270210   /usr/lib/libtasn1.so.3.1.6

    使用“+d”选项可以搜索某个目录下所有的文件,查看到底哪个文件被哪个进程调用了。

    查看以httpd开头的进程调用了哪些文件

    [root@localhost ~]# lsof -c httpd
    COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
    httpd 4689 root cwd DIR 83 4096 2 /
    httpd 4689 root rtd DIR 83 4096 2 /
    httpd 4689 root txt REG 83 1797559 2855  /usr/local/apache2/bin/httpd
    httpd 4689 root mem REG 83 302300 665303 /lib/libfreebl3.so
    httpd 4689 root mem REG 83 58704 655087  /lib/libnss_files-2.12.s
    httpd 4689 root mem REG 83 142472 665291 /lib/ld-2.12.so
    httpd 4689 root mem REG 83 1889704 665292 /lib/libc-2.12.so
    …省略部分输出…

    使用“-c”选项可以查询以某个字符串开头的进程调用的所有文件,比如执行“lsof-c httpd”命令就会查询出以 httpd 开头的进程调用的所有文件。

    查询PID是1的进程调用的文件

    [root@localhost ~]# lsof -p 1
    COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
    init 1 root cwd DIR 83 4096 2 /
    init 1 root rtd DIR 83 4096 2 /
    init 1 root txt REG 83 145180 130874 /sbin/init
    init 1 root mem REG 83 142472 665291 /lib/ld-2.12.so
    init 1 root mem REG 83 58704 655087 /lib/libnss_files-2.12.so

    当然,我们也可以按照 PID 查询进程调用的文件,比如执行“lsof -p 1”命令就可以查看 PID 为 1 的进程调用的所有文件。

    按照用户名查询某个用户的进程调用的文件

    [root@localhost ~]# lsof -u root
    COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
    init 1 root cwd DIR 83 4096 2 /
    init 1 root rtd DIR 83 4096 2 /
    init 1 root txt REG 83 145180 130874 /sbin/init
    init 1 root mem REG 83 142472 665291 /lib/ld-2.12.so
    init 1 root mem REG 83 58704 655087/lib/libnss_files-2.12.s
    init 1 root mem REG 83 38768 655310/lib/libnih-dbus.so.1.0.
    …省略部分输出…

    查看某个用户的进程调用了哪些文件。

  • 相关阅读:
    mac 切换 默认xcode 版本
    mac 查看jenkins 管理员密码地址
    解决 mac ox 终端显示bogon 的问题
    eclipse 修改默认作者信息
    mac 查看 本地网络代理
    appium 解决 启动case 时不 重装 setting 和 unlock.apk的解决方案实践
    appium 输入时间慢的解决方案
    命令 关闭 appium 命令
    解决 appium could not start ios-webkit-debug-proxy
    PPT总结
  • 原文地址:https://www.cnblogs.com/lizhouwei/p/10127242.html
Copyright © 2011-2022 走看看