터미널을 닫은 후에도 지속되는 명령을 실행하는 방법은 무엇입니까?

터미널을 닫은 후에도 지속되는 명령을 실행하는 방법은 무엇입니까?

때로는 프로세스를 시작하고 잊어버리고 싶을 때가 있습니다. 다음과 같이 명령줄에서 시작하면:

redshift

터미널을 닫을 수 없거나 프로세스가 종료됩니다. 프로세스를 종료하지 않고 터미널을 닫을 수 있는 방식으로 명령을 실행할 수 있습니까?

답변1

다음 2가지 중 하나가 작동해야 합니다.

$ nohup redshift &

또는

$ redshift &
$ disown

작동 방식에 대한 자세한 내용은 아래를 참조하세요.

답변2

귀하의 프로그램이이미 실행 중Ctrl-Z를 사용하여 일시 중지 하고 백그라운드로 끌어온 bgdisown다음과 같이 사용할 수 있습니다 .

$ sleep 1000
^Z
[1]+  Stopped                 sleep 1000
$ bg
$ disown
$ exit

답변3

@Steven D가 훌륭한 답변을 게시했습니다., 그러나 나는 이것이 좀 더 명확해질 것이라고 생각했습니다.

터미널이 종료될 때 프로세스가 종료되는 이유는 시작한 프로세스가 터미널의 하위 프로세스이기 때문입니다. 터미널이 닫히면 이러한 하위 프로세스도 종료됩니다. pstree예를 들어 kate &Konsole에서 실행할 때 다음을 사용하여 프로세스 트리를 볼 수 있습니다 .

init-+
     ├─konsole─┬─bash─┬─kate───2*[{kate}]
     │         │      └─pstree
     │         └─2*[{konsole}]

종료 시 프로세스가 분리되도록 하려면 kate다음과 같이 명령과 함께 사용하십시오.konsolekonsolenohup

nohup kate &

닫으면 konsole다음 pstree과 같이 표시됩니다.

init-+
     |-kate---2*[{kate}]

그리고 kate살아남을 것이다. :)

대안은 screen// 를 사용하는 것입니다 tmux. byobu그러면 터미널과 관계없이 쉘이 계속 실행됩니다.

답변4

나는 선호한다:

(applicationName &)

예를 들어: linux@linux-desktop:~$ (chromium-browser &)

명령을 입력할 때는 반드시 괄호를 사용하세요!

관련 정보