저는 화면을 사용하고 있으며 분리 모드의 터미널에서 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 &
이 터미널 세션을 종료하려면 at
job 명령을 사용해야 할 수도 있습니다.
at now + 1 minute
nohup your-command &
(ctrl-d)