셸 스크립트를 사용하여 명령을 시작하려고합니다. 나는 그것이 끝나는 지 / 언제 / 어떻게 / 왜 완료되는지 상관하지 않습니다. 프로세스가 시작되고 실행되기를 원하지만 즉시 쉘로 돌아갈 수 있기를 원합니다.
답변
백그라운드에서 스크립트를 실행할 수 있습니다.
$ myscript &
이것은 &
스크립트 내부에 넣는 것과는 다르므로 원하는 작업을 수행하지 못할 수 있습니다.
답변
모두가 잊어 버렸습니다 disown
. 그래서 다음은 요약입니다.
-
&
작업을 백그라운드에 둡니다.- 입력을 읽으려는 시도를 차단하고
- 쉘이 완료 될 때까지 기다리지 않도록합니다.
-
disown
쉘의 작업 제어에서 프로세스를 제거하지만 여전히 터미널에 연결된 상태로 둡니다.- 결과 중 하나는 쉘이 a를 보내지 않는다는 것입니다
SIGHUP
(쉘이를 받으면 프로세스에SIGHUP
a도 보내며SIGHUP
일반적으로 프로세스가 종료됩니다). - 그리고 분명히 백그라운드 작업에만 적용 할 수 있습니다 (포 그라운드 작업이 실행 중일 때는 입력 할 수 없기 때문입니다).
- 결과 중 하나는 쉘이 a를 보내지 않는다는 것입니다
-
nohup
단말에서 처리를 끊은 그 출력 리디렉션nohup.out
및 실드를 발SIGHUP
.- 이 프로세스는 전송 된
SIGHUP
. - 작업 제어와 완전히 독립적이며 원칙적으로 포 그라운드 작업에도 사용할 수 있습니다 (그다지 유용하지는 않습니다).
- 일반적으로
&
(백그라운드 작업으로) 와 함께 사용됩니다 .
- 이 프로세스는 전송 된
답변
nohup cmd
단말기를 닫아도 끊지 않습니다. 기본적으로 출력은 nohup.out으로 이동합니다.
이것을 배경과 결합 할 수 있습니다.
nohup cmd &
출력을 제거하고
nohup cmd > /dev/null 2>&1 &
disown
명령 도 가능 합니다. 입력 cmd
, Ctrl-Z
, bg
,disown
답변
또는 프로그램을 실행 한 후 Ctrl-Z를 눌러 프로그램을 중지하고 다음을 입력 할 수 있습니다.
bg
마지막으로 중지 된 프로그램을 백그라운드에 둡니다. ( ‘&’없이 무언가를 시작했지만 다시 시작하지 않고 backgroung에서 원하는 경우 유용합니다)
답변
screen -m -d $command$
분리 된 세션에서 명령을 시작합니다. screen -r
시작된 세션에 연결하는 데 사용할 수 있습니다 . 원격 세션에도 매우 유용한 훌륭한 도구입니다. 에서 자세히 알아보십시오 man screen
.