Existe uma maneira de combinar saída formatada e argumentos de comando completos em um comando ps?

3

Em solaris, /usr/ucb/ps auxww fornece argumentos completos de linha de comando (sem truncar comandos longos + argumentos).

E ps tem a opção -o que fornece saída formatada.

Existe um único comando (ou one-liner) que possui ambos os recursos?

Nota: o problema também tem a ver com ps truncando argumentos após uma largura específica, portanto, a necessidade de /usr/ucb/ps .

    
por user55570 21.06.2015 / 12:18

2 respostas

4

Não com um único comando que conheço.

O Solaris ps obtém dados do processo para argumentos como linha de comando do /proc/[PID]/psinfo file , que contém dados que preenchem um struct psinfo por /usr/include/sys/procfs.h :

#define PRARGSZ     80  /* number of chars of arguments */
typedef struct psinfo {
    int pr_flag;    /* process flags (DEPRECATED; do not use) */
    int pr_nlwp;    /* number of active lwps in the process */
    .
    .
    .
    char    pr_fname[PRFNSZ];   /* name of execed file */
    char    pr_psargs[PRARGSZ]; /* initial characters of arg list */
...

Portanto, você não pode obter todo o conjunto de argumentos de linha de comando de /usr/bin/ps . Você pode usar /usr/ucb/ps ... como você já observou e formatar sua saída usando awk ou similar. Há também pargs , que pode ser usado para emitir argumentos de linha de comando. (O local instalado de pargs varia dependendo da versão do Solaris.)

Esteja ciente, no entanto, de que um processo pode modificar seus argumentos e, para obter as informações completas do argumento, é necessária permissão para ler o espaço de endereço do processo.

    
por 21.06.2015 / 16:48
1

Acho que você pode usar ps -eo args se quiser ver todos os argumentos

De qualquer forma, você pode combinar o primeiro exemplo com mais opções

ps -eo user,pid,args
    
por 21.06.2015 / 12:52

Tags