ps -x 플래그는 특정 버전의 Linux에서 지원되지 않습니다.

ps -x 플래그는 특정 버전의 Linux에서 지원되지 않습니다.

ps명령은 아래와 같이 Linux의 특정 버전을 제외하고 작동합니다.

[root@failinghost ~]# ps -xef | grep -v grep | grep websphere
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ

[root@failinghost ~]# ps -version
ERROR: Unsupported SysV option.
********* simple selection *********  ********* selection by list *********
-A all processes                      -C by command name
-N negate selection                   -G by real group ID (supports names)
-a all w/ tty except session leaders  -U by real user ID (supports names)
-d all except session leaders         -g by session OR by effective group name
-e all processes                      -p by process ID
                                      -q by process ID (unsorted & quick)
T  all processes on this terminal     -s processes in the sessions given
a  all w/ tty, including other users  -t by tty
g  OBSOLETE -- DO NOT USE             -u by effective user ID (supports names)
r  only running processes             U  processes for specified users
x  processes w/o controlling ttys     t  by tty

*********** output format **********  *********** long options ***********
-o,o user-defined  -f full            --Group --User --pid --cols --ppid
-j,j job control   s  signal          --group --user --sid --rows --info
-O,O preloaded -o  v  virtual memory  --cumulative --format --deselect
-l,l long          u  user-oriented   --sort --tty --forest --version
-F   extra full    X  registers       --heading --no-heading --context
                                      --quick-pid

                    ********* misc options *********
-V,V  show version      L  list format codes  f  ASCII art forest
-m,m,-L,-T,H  threads   S  children in sum    -y change -l format
-M,Z  security data     c  true command name  -c scheduling class
-w,w  wide output       n  numeric WCHAN,UID  -H process hierarchy

[root@failinghost ~]# ps -V
procps version 3.2.8

[root@failinghost ~]# uname -a
Linux failinghost 2.6.32-754.28.1.el6.x86_64 #1 SMP Fri Jan 31 06:05:42 EST 2020 x86_64 x86_64 x86_64 GNU/Linux

다음은 또 다른 Linux 호스트입니다. 다행히도 오류가 발생하지 않습니다.

[root@workinghost ~]$ ps -xef | grep -v grep | grep websphere

[root@workinghost ~]$ echo $?
1

[root@workinghost ~]$ uname -a
Linux workinghost 3.10.0-1062.1.2.el7.x86_64 #1 SMP Mon Sep 16 14:19:51 EDT 2019 x86_64 x86_64 x86_64 GNU/Linux

[root@workinghost ~]$ ps -V
procps-ng version 3.3.10

내 ps 명령이 Solaris가 아닌 모든 시스템에서 작동하기를 원합니다.

두 Linux 버전 모두에서 작동하는 솔루션을 제안할 수 있습니까?

답변1

아마도 필요하지 않을 것입니다. x모든 -e프로세스를 선택하는 것으로 충분합니다.

ps -ef

ps이는 발생할 수 있는 모든 Linux 버전 에서 작동합니다 .

from 의 현재 버전은 ps경고 없이 대시가 있거나 없는 옵션을 procps-ng해석합니다 . CentOS 6 의 이전 버전에서는 경고가 추가되었습니다(그러나 여전히 모든 프로세스가 나열되므로 찾고 있는 프로세스가 존재하는 경우 찾아야 합니다). ).xpsprocpsgrep행동두 버전에서는 다르지만 ps -xef명령과 해당 환경이 출력됩니다. 이를 유지하려면 경고를 삭제할 수 있습니다.

ps -xef 2>/dev/null

이는 psfrom procps및 의 이전 버전과 새 버전 모두에서 작동합니다 procps-ng.

답변2

x겉모습 때문에 불평할 수도 있어요맨페이지"BSD 옵션"이라고 부르므로 대시가 없어야 합니다(즉, x대신 입니다 -x). 어쨌든 이것은 -x존재하지 않는 것 같으니 어떻게 설명할지 누가 알겠습니까? 아마도 의 동의어로 -x, 예를 들어 다음과 같은 경우인 것 같습니다.현재 FreeBSD ps.

또한 콤보가 무엇을 하는지, 무엇을 해야 하는지 잘 모르겠습니다. 내 시스템(Debian, ps from procps-ng 3.3.12)에서는 프로세스를 트리 형식으로 나열하지만 거기에는 다음을 나타내는 옵션이 없는 것 같습니다.

  PID TTY      STAT   TIME COMMAND
12277 ?        S    119:08 mosh-server new ...
12278 pts/20   Ss     0:00  \_ -bash ...
12286 pts/20   S+     0:01      \_ screen -xU

한 줄만 grep하려면 트리 출력이 필요하지 않을 것입니다.

답변3

3.2.8은 최소 9년이 지났으며 현재 버전보다 많은 버전이 뒤떨어져 있습니다.

문제는 하나의 모드로 설정했는데 x가 다른 모드이고 원하는 모드가 무엇인지 혼란스러워진다는 것입니다. 내 생각에 우리는 2012년에 출시된 3.3.4에서 이 문제를 수정했다고 생각합니다(신경 쓰지 않게 만들어 엄밀히 말하면 정확하지는 않지만 사용자 기대에 더 부합하도록 만들었습니다).

ps xef는 절대적으로 정확하며 이것이 당신에게 유용할 것이라고 믿습니다.

관련 정보