Como posso obter informações ilimitadas do pstree?

1

Estou usando pstree para assistir a uma sequência de scripts e, mesmo usando -pla , recebo versões abreviadas de argumentos e nomes de scripts. Como exemplo:

sshd,13431
  └─bash,13432
      └─runJobs.sh,18780 ./runJobs.sh
          └─job1.sh,18781 ./job1.sh /path/to/location/of/some/file/that/I/need/to/see/file1.txt /path/to/the/location/of/some/other/file/that/I/need/to/see/file2.txt /path/to/yet/another/location/of/some/other/file/that/I/also/need/to/see/file3.txt/yet/another/long/path/to/a/4th/locatio
              └─veryLongNameFor,18782 ./veryLongNameForJob2.sh Argument1_is_very_long arg2_is_also_quite_long The_name_for_arg3_is_even_longer
                  └─sleep,18783 1000

Como você pode ver verLongNameForJob2.sh cortado, não obtenho o caminho completo para /yet/another/long/path/to/a/4th/location/that/I/need/to/lookAt/file4.txt e também obtenho /path/to/yet/another/location/of/some/other/file/that/I/also/need/to/see/file3.txt concatenado com /yet/another/long/path/to/a/4th/location/that/I/need/to/lookAt/file4.txt . Como posso obter nomes de scripts completos juntamente com nomes de argumentos completos sem concatenação, mesmo que sejam muito longos?

Abaixo estão os scripts que usei para isso:

runJobs.sh :

#!/bin/bash
### contents of 'runJobs.sh'

arg1=/path/to/location/of/some/file/that/I/need/to/see/file1.txt
arg2=/path/to/the/location/of/some/other/file/that/I/need/to/see/file2.txt
arg3=/path/to/yet/another/location/of/some/other/file/that/I/also/need/to/see/file3.txt
arg4=/yet/another/long/path/to/a/4th/location/that/I/need/to/lookAt/file4.txt

./job1.sh $arg1 $arg2 $arg3 $arg4

job1.sh :

#!/bin/bash
### contents of job1.sh

arg1=Argument1_is_very_long 
arg2=arg2_is_also_quite_long
arg3=The_name_for_arg3_is_even_longer

./veryLongNameForJob2.sh $arg1 $arg2 $arg3

veryLongNameForJob2.sh :

#!/bin/bash
### contents of 'veryLongNameForJob2.sh'

sleep 1000
    
por drjrm3 11.04.2017 / 15:21

1 resposta

0

Eu repliquei o problema com pstree no meu Ubuntu 16.04.2 LTS. Eu precisava de caminhos mais longos, mas ainda assim.

Ferramentas como pstree use /proc para coletar informações, leia /proc/<PID>/cmdline . É uma má sorte se as informações forem truncadas lá. Mas pode ser que você tenha atingido apenas o limite da implementação pstree .

No meu caso, /proc/<PID>/cmdline não foi aparada quando ultrapassei o limite em pstree .

Outra boa notícia é que os argumentos em /proc/<PID>/cmdline são separados por caracteres NULL ( 0x00 ).

    
por 06.07.2017 / 07:47