AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 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

Como posso listar informações sobre um thread/LWP por `ps`?

  • 772

Como posso listar informações sobre um thread/LWP por ps?

Por que não posso fazer isso simplesmente por:

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

O melhor que posso fazer

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

É um LWP porque

$ 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

e

$ 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

Obrigado.

process ps
  • 2 2 respostas
  • 6009 Views

2 respostas

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

    Se você quiser ver apenas esse processo LWP, ps -e -q 10172. Se você quiser ver todos os tópicos relacionados, você pode fazerps -eL -q 10172

    Então, por exemplo, na minha máquina rsyslogtem threads:

      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
    

    Eu posso ver um único segmento (por exemplo, 22320)

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

    Observe que mostra o PID principal do processo.

    Eu posso ver todo o processo relacionado para esse segmento:

    % 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

    Outra maneira de encontrar LWP ou ID de thread.

    Eu abri o editor vi em dois arquivos de amostra a.txt e b.txt

    [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 = Processo leve ou ID da rosca NLWP = Número do processo leve

    [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
    

    Você pode ver o ID do thread (LWP) "2662|2663" para PIDs "2662|2663" respectivamente.

    [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
    

    Outro exemplo desta vez.

    [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
    

    A partir da saída acima, você pode ver que todos esses processos têm o mesmo número PID (1470). No entanto, eles têm um número único de identificação de thread (1470, 1471, 1472, 1473, 1474).

    No Linux, esses números de identificação de thread são indicados por LWP (o nome da coluna de comando ps também é LWP). LWP significa Processo Leve.

    Na verdade... No linux, todo programa tem pelo menos um thread.

    [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

relate perguntas

  • Como obter os IDs dos grupos suplementares de um processo?

  • O que `/proc/irq/.../spurious` contém?

  • Um processo pai pode alterar o ambiente de seu filho?

  • Como 'ejetar' obtém processos para fechar identificadores de arquivo?

  • ps -vxa não classifica em relação à memória

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

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

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve