`ps axjf`와 `ps -axjf`의 차이점

`ps axjf`와 `ps -axjf`의 차이점

ps저는 Linux의 명령 에 대해 더 깊이 이해하려고 노력하고 있습니다 .

ps axjf를 사용했을 때 ps -axjf매뉴얼에서는 다른 의미를 가지고 있는 것처럼 보이지만 출력은 거의 동일하다는 것을 발견했을 때 혼란스러웠습니다 .

그들 사이의 구체적인 차이점은 무엇입니까?

이러한 옵션에 대해 설명서에는 다음과 같이 나와 있습니다.

a      Lift the BSD-style "only yourself" restriction, which is imposed upon the set of all processes when some BSD-style (without "-") options are used or when the ps personality setting is BSD-like.  The set of processes selected in this manner is in addition to the set of processes selected by other means.  An alternate description is that this option causes ps to list all processes with a terminal (tty), or to list all processes when used together with the x option.

-a     Select all processes except both session leaders (see getsid(2)) and processes not associated with a terminal.

x      Lift the BSD-style "must have a tty" restriction, which is imposed upon the set of all processes when some BSD-style (without "-") options are used or when the ps personality setting is BSD-like.  The set of processes selected in this manner is in addition to the set of processes selected by other means.  An alternate description is that this option causes ps to list all processes owned by you (same EUID as ps), or to list all processes when used together with the a option.

j      BSD job control format.

-j     Jobs format.

f      ASCII art process hierarchy (forest).

-f     Do full-format listing.  This option can be combined with many other UNIX-style options to add additional columns.  It also causes the command arguments to be printed.  When used with -L, the NLWP (number of threads) and LWP (thread ID) columns will be added.  See the c option, the format keyword args, and the format keyword comm.

특히 fand 옵션은 계층적 관계를 출력하는데 아무런 의미가 없는 -f것 같습니다 .-f

두 명령의 출력을 비교했는데 몇 줄을 제외하면 거의 동일합니다.

lightxy233@iZ8vb0rgcfh3yx60rzee1jZ:~$ ls
_axjf.txt  axjf.txt
lightxy233@iZ8vb0rgcfh3yx60rzee1jZ:~$ diff _axjf.txt axjf.txt
81c81
<       2  639305       0       0 ?             -1 I        0   0:00  \_ [kworker/u4:0-flush-252:0]
---
>       2  639305       0       0 ?             -1 I        0   0:00  \_ [kworker/u4:0-events_unbound]
126,127c126,127
<  630827  630830  630830  630830 pts/0     641497 Ss    1000   0:00  |       \_ -bash
<  630830  641497  641497  630830 pts/0     641497 R+    1000   0:00  |       |   \_ ps axjf
---
>  630827  630830  630830  630830 pts/0     641448 Ss    1000   0:00  |       \_ -bash
>  630830  641448  641448  630830 pts/0     641448 R+    1000   0:00  |       |   \_ ps -axjf
129c129
<  630845  641496  630845  630845 ?             -1 S     1000   0:00  |           \_ sleep 1
---
>  630845  641447  630845  630845 ?             -1 S     1000   0:00  |           \_ sleep 1

나는 이것이 다양한 스타일의 ps 명령을 혼합하는 것을 포함할 것이라고 생각하지만 아직 좋은 설명을 찾지 못했습니다.

답변1

당신이 사용하고 있다고 가정procps-ng의psps, 실제로는 다양한 스타일을 혼합하고 옵션을 해석하는 방법이 중요합니다 . 명령의 핵심 요소는 x옵션을 사용하는 것입니다. 옵션은 BSD 스타일로만 존재하고 명령에서 명시적이므로( -a인수가 없기 때문에) 전체 옵션 세트는 BSD 스타일로 해석됩니다. 결과적으로 동일한 옵션 세트가 활성화되고 프로세스의 차이로 인해 출력의 차이가 발생합니다 axjf.-axjf

을 제거하면 과 의 x차이점을 볼 수 있습니다 .ps ajfps -ajf

x매뉴얼 페이지에 표시된 모호함은 ps옵션 사용과 관련됩니다 -u. Unix 스타일로 해석되는 경우 사용자를 지정하려면 인수가 필요합니다. 따라서 -ux(및 그 변형, 예를 들어 )은 사용자 가 없는 -aux것으로 해석되며 , 이 경우 procps-ng는 BSD 스타일로 전환하라는 경험적 방법을 적용합니다.-u xxps

관련 정보