Como obter o cmd completo de um processo no linux?

0

Meu processo cmd é muito longo porque há muitos argumentos. Agora eu gostaria de verificar o cmd completo. Usando cat /proc/PROCESS_NUMBER/cmdline , o cmd não é totalmente mostrado. Existe alguma outra maneira de ver exatamente cmd completo no linux?

    
por DeepNightTwo 16.11.2012 / 06:58

1 resposta

2

Por quanto tempo é sua linha de comando?

Se estiver no intervalo de megabytes, talvez você possa recompilar seu kernel com um ARG_MAX maior no arquivo linux-3.*/include/linux/limits.h . Eu coloquei lá

#define ARG_MAX  2097152    /* # bytes of args + environ for exec() */

(também pode haver uma maneira de definir esse limite dinamicamente, mas esqueci como e posso estar errado)

Eu gosto muito do ARG_MAX limit porque ocasionalmente uso o recurso de expansão global **/*.c de zsh , que é meu shell interativo.

Não coloque um valor enorme em ARG_MAX ; Eu acho que você quer ter menos de 2% da sua memória RAM disponível.

Observe que /proc/*/cmdline contém bytes nulos. Você pode traduzi-los, veja this .

adendos

se, por alguma razão, você não puder pagar por uma linha de comando grande, encontre alguma forma e convenção para evitar ter uma quantidade tão grande de argumentos de programa. Por exemplo, você poderia modificar o programa chamado para ler algumas coisas de um arquivo ou alguma outra fonte (banco de dados?). Por exemplo, alguns programas Unix (por exemplo, GCC) aceitam @ filename para ler opções de algum arquivo chamado nome do arquivo .

    
por 16.11.2012 / 07:19