AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 512289
Accepted
Tim
Tim
Asked: 2019-04-14 07:25:25 +0800 CST2019-04-14 07:25:25 +0800 CST 2019-04-14 07:25:25 +0800 CST

如何通过 `ps` 列出有关线程/LWP 的信息?

  • 772

如何列出有关线程/LWP 的信息ps?

为什么我不能简单地这样做:

$ ps 10173
  PID TTY      STAT   TIME COMMAND
$ ps -L 10173
  PID   LWP TTY      STAT   TIME COMMAND

我能做的最好的

$ ps -eL  | grep 10173
10172 10173 pts/8    00:00:00 java

这是一个 LWP,因为

$ ps -L 10172
  PID   LWP TTY      STAT   TIME COMMAND
10172 10172 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10173 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10174 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10175 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10176 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10177 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10178 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10179 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10180 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10181 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10182 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10183 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10184 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10185 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10186 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10187 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10188 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10189 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main
10172 10190 pts/8    Tl     0:00 java -cp target com.mycompany.app.Main

和

$ pstree -pau -l -G -s 10172
systemd,1 splash
  └─lxterminal,3194,t
      └─bash,12150
          └─java,10172 -cp target com.mycompany.app.Main
              ├─{java},10173
              ├─{java},10174
              ├─{java},10175
              ├─{java},10176
              ├─{java},10177
              ├─{java},10178
              ├─{java},10179
              ├─{java},10180
              ├─{java},10181
              ├─{java},10182
              ├─{java},10183
              ├─{java},10184
              ├─{java},10185
              ├─{java},10186
              ├─{java},10187
              ├─{java},10188
              ├─{java},10189
              └─{java},10190

谢谢。

process ps
  • 2 2 个回答
  • 6009 Views

2 个回答

  • Voted
  1. Best Answer
    Stephen Harris
    2019-04-14T07:55:32+08:002019-04-14T07:55:32+08:00

    如果您只想查看该 LWP 进程,ps -e -q 10172. 如果你想查看所有相关的线程,那么你可以这样做ps -eL -q 10172

    因此,例如,在我的机器上rsyslog有线程:

      PID   LWP TTY          TIME CMD
    22316 22316 ?        00:00:00 rsyslogd
    22316 22318 ?        00:02:23 in:imjournal
    22316 22319 ?        00:00:00 in:imudp
    22316 22320 ?        00:00:07 in:imtcp
    22316 22321 ?        00:00:00 in:imtcp
    22316 22322 ?        00:00:00 in:imtcp
    22316 22323 ?        00:00:00 in:imtcp
    22316 22324 ?        00:00:00 in:imtcp
    22316 22325 ?        00:00:24 rs:main Q:Reg
    

    我可以看到一个线程(例如 22320)

    % ps -e -q 22320
      PID TTY          TIME CMD
    22316 ?        00:02:55 in:imtcp
    

    请注意,它显示了进程的主 PID。

    我可以看到该线程的所有相关进程:

    % ps -eL -q 22320
      PID   LWP TTY          TIME CMD
    22316 22316 ?        00:00:00 rsyslogd
    22316 22318 ?        00:02:23 in:imjournal
    22316 22319 ?        00:00:00 in:imudp
    22316 22320 ?        00:00:07 in:imtcp
    22316 22321 ?        00:00:00 in:imtcp
    22316 22322 ?        00:00:00 in:imtcp
    22316 22323 ?        00:00:00 in:imtcp
    22316 22324 ?        00:00:00 in:imtcp
    22316 22325 ?        00:00:24 rs:main Q:Reg
    
    • 4
  2. Kumar Abhinav
    2020-05-17T21:06:34+08:002020-05-17T21:06:34+08:00

    另一种查找 LWP 或线程 ID 的方法。

    我针对两个示例文件 a.txt 和 b.txt 打开 vi 编辑器

    [root@docker ~]# ps -aux | head -1;ps -aux| egrep "2663|2662" | grep -v grep
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root      2662  0.0  0.0 120660  2988 pts/2    S+   09:44   0:00 vim a.txt
    root      2663  0.0  0.0 120660  2988 pts/1    S+   09:44   0:00 vim b.txt
    

    LWP = 轻量级进程或线程 ID NLWP = 轻量级进程数

    [root@docker ~]# ps -eLf | head -1; ps -eLf | egrep "2662|2663" |grep -v grep
    UID        PID  PPID   LWP  C NLWP STIME TTY          TIME CMD
    root      2662  2624  2662  0    1 09:44 pts/2    00:00:00 vim a.txt
    root      2663  2582  2663  0    1 09:44 pts/1    00:00:00 vim b.txt
    

    您可以分别查看 PID“2662|2663”的线程 ID (LWP)“2662|2663”。

    [root@docker ~]# pstree -pau -l -G -s 2662
    systemd,1 --switched-root --system --deserialize 22
      mqsshd,1197 -D
          mqsshd,2566
              mqbash,2624
                  mqvim,2662 a.txt
    [root@docker ~]# pstree -pau -l -G -s 2663
    systemd,1 --switched-root --system --deserialize 22
      mqsshd,1197 -D
          mqsshd,2564
              mqbash,2582
                  mqvim,2663 b.txt
    

    这次又是一个例子。

    [root@localhost ~]# ps -efL
    UID        PID  PPID   LWP  C NLWP STIME TTY          TIME CMD
    root      1470     1  1470  0   19 11:25 ?        00:00:11 /opt/mongodb-linux-x86_64-rhel62-3.0.4/bin/mongod --bind_ip 10.12.1.132 --dbpath /mnt/mongodb_data --fork --logpath /mnt/mongodb.log
    root      1470     1  1471  0   19 11:25 ?        00:00:00 /opt/mongodb-linux-x86_64-rhel62-3.0.4/bin/mongod --bind_ip 10.12.1.132 --dbpath /mnt/mongodb_data --fork --logpath /mnt/mongodb.log
    root      1470     1  1472  0   19 11:25 ?        00:00:00 /opt/mongodb-linux-x86_64-rhel62-3.0.4/bin/mongod --bind_ip 10.12.1.132 --dbpath /mnt/mongodb_data --fork --logpath /mnt/mongodb.log
    root      1470     1  1473  0   19 11:25 ?        00:00:00 /opt/mongodb-linux-x86_64-rhel62-3.0.4/bin/mongod --bind_ip 10.12.1.132 --dbpath /mnt/mongodb_data --fork --logpath /mnt/mongodb.log
    root      1470     1  1474  0   19 11:25 ?        00:00:06 /opt/mongodb-linux-x86_64-rhel62-3.0.4/bin/mongod --bind_ip 10.12.1.132 --dbpath /mnt/mongodb_data --fork --logpath /mnt/mongodb.log
    

    从上面的输出中,您可以看到所有这些进程都有相同的 PID 号(1470)。但是,它们具有唯一的线程 ID 编号(1470、1471、1472、1473、1474)。

    在 Linux 中,这些线程 id 编号由 LWP 表示(ps 命令列名也是 LWP)。LWP 代表轻量级工艺。

    实际上......在linux中,每个程序都至少有一个线程。

    [root@docker ~]# ps axms | head -1; ps axms |egrep "2662|2663" | grep -v grep
      UID   PID          PENDING          BLOCKED          IGNORED           CAUGHT STAT TTY        TIME COMMAND
        0  2662 0000000000000000                -                -                - -    pts/2      0:00 vim a.txt
        0  2663 0000000000000000                -                -                - -    pts/1      0:00 vim b.txt
    
    • 1

相关问题

  • 如何获取进程的补充组 ID?

  • `/proc/irq/.../spurious` 包含什么?

  • 父进程可以改变其子进程的环境吗?

  • “弹出”如何让进程关闭文件句柄?

  • ps -vxa 不对内存进行排序

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve