하나의 ps 명령으로 형식화된 출력과 전체 명령 인수를 결합하는 방법이 있습니까?

하나의 ps 명령으로 형식화된 출력과 전체 명령 인수를 결합하는 방법이 있습니까?

Solaris에서는 /usr/ucb/ps auxww전체 명령줄 인수를 제공합니다(긴 명령 + 인수는 잘리지 않음).

그리고 ps형식화된 출력을 제공하는 -o 옵션이 있습니다.

두 가지를 모두 수행하는 단일 명령(또는 단일 행 명령)이 있습니까?

참고: 이 문제는 특정 너비 이후에 매개변수를 자르는 것과도 관련되어 ps있으므로 /usr/ucb/ps.

답변1

내가 아는 한, 명령은 없습니다.

Solaris는 ps다음에서 명령줄 인수와 같은 프로세스 데이터를 얻습니다./proc/[PID]/psinfo문서, struct psinfo각각을 채울 데이터가 포함되어 있습니다./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 */
...

따라서 여기에서 전체 명령줄 인수 세트를 얻을 수 없습니다 /usr/bin/ps. /usr/ucb/ps ...이미 알아차린 대로 사용하고 awk유사한 방법을 사용하여 출력 형식을 지정할 수 있습니다 . 또한 pargs명령줄 인수를 발행하는 데 사용할 수도 있습니다. (설치 위치는 pargsSolaris 버전에 따라 다릅니다.)

그러나 프로세스는 매개변수를 수정할 수 있으며 완전한 매개변수 정보를 얻으려면 프로세스의 주소 공간을 읽을 수 있는 권한이 필요합니다.

답변2

ps -eo args 각 매개변수를 보고 싶다면 사용할 수 있다고 생각합니다.

어쨌든 첫 번째 예를 더 많은 옵션과 결합할 수 있습니다.

ps -eo user,pid,args

관련 정보