nohup으로 실행하려는 스크립트가 있습니다.
nohup /home/user/script.sh&
ps -a를 실행하면 여전히 프로세스를 볼 수 있지만 터미널을 닫고 ps -a를 다시 실행하면 프로세스가 없습니다. 이런 일이 일어나야 할까요? 이 스크립트를 백그라운드에서 실행하고 싶습니다.
감사해요
답변1
이는 현재 있는 터미널을 통해 프로세스가 생성되었고 &가 해당 터미널의 배경에 프로세스를 배치하기 때문입니다.
a를 실행하면 ps faux
프로세스의 가계도를 볼 수 있고 현재 있는 터미널에서 프로세스가 어떻게 생성되었는지 확인할 수 있습니다. 해당 터미널 프로세스를 종료하면 현재 실행 중인 하위 프로세스 스크립트와 같은 모든 하위 프로세스도 종료됩니다.
대안은 다음 tmux
과 같은 것을 사용하여 백그라운드 세션에서 스크립트를 실행하거나 screen
cronjob으로 실행하거나 init 시스템을 통해 해당 유닛 파일을 생성하여 데몬화하는 것입니다.