screen 명령을 사용한 sleep 명령이 ps에 표시되지 않습니다

screen 명령을 사용한 sleep 명령이 ps에 표시되지 않습니다

저는 화면을 사용하고 있으며 분리 모드의 터미널에서 sleep 명령을 실행하고 있습니다.
화면이 즉시 반환되면 ps명령을 실행하여 절전 모드가 작동하는지 확인합니다.

$ screen -d -m 'sleep 2m'
[raj@localhost ~]$ ps
PID TTY          TIME CMD
22795 pts/0    00:00:00 bash
22869 pts/0    00:00:00 ps

그러나 명령에는 수면이 표시되지 않습니다. 내가 여기서 뭘 잘못하고 있는 걸까?

답변1

이것은 또한 처음에는 나를 혼란스럽게 만들었습니다. 그런 다음 screen로컬 매뉴얼 페이지의 개요를 다시 읽었습니다 .온라인 매뉴얼 페이지요약은 제공되지 않음) 그리고 다음과 같이 명시되어 있습니다.

screen [ -options ] [ cmd [ args ] ]

cmd...그것은 과 를 독립적인 주장으로 취급하고 싶어한다고 믿게 만듭니다 args.

첫 번째 인수를 따옴표로 묶은 값(' ')으로 전달했으므로 실행한 명령 대신 sleep 2m(정확히) ' '라는 이름의 명령을 실행하려고 시도합니다.sleep 2m진짜당신이 원하는 것은 sleep그 자체의 진술을 가지고 있습니다 2m. 명령 screen이 성공적으로 종료되었지만(내 테스트에서는)아니요명령을 성공적으로 실행했습니다.

대신 사용하세요:

screen -d -m sleep 2m

대신 ps현재 터미널과 관련된 프로세스만 표시됩니다(여기서 SCREEN 및 관련 프로세스는아니요), 사용:

ps x

그러면 다음과 같이 표시됩니다.

$ ps x
  PID TTY      STAT   TIME COMMAND
 # ...
 7514 pts/1    Ss     0:00 -bash
 7761 ?        Ss     0:00 SCREEN -d -m sleep 2m
 7762 pts/2    Ss+    0:00 sleep 2m
 7880 pts/1    R+     0:00 ps x
 # ...

답변2

그것을 사용하는 것으로 nohup충분합니까 ? ps실행하면 화면 프로세스에서 프로세스가 숨겨질 수 있는 화면 에 나타납니다 .

배쉬가 그 예이다.

nohup your-command &

이 터미널 세션을 종료하려면 atjob 명령을 사용해야 할 수도 있습니다.

at now + 1 minute

nohup your-command &

(ctrl-d)

관련 정보