정말 nohup을 사용해야 하나요? [복사]

정말 nohup을 사용해야 하나요? [복사]

내 스크립트가 내 서버의 백그라운드에서 실행되기를 원합니다. 나는 nohup에 화가 난다. 내 script.py가 있습니다. 나는 다음과 같이 실행합니다 :

python3 script.py&

터미널을 닫아도 백그라운드에서 실행됩니다. 이 스크립트는 0부터 시작하여 매초마다 파일에 숫자를 씁니다 /tmp/aaa.txt. 서버 연결을 끊었다가 다시 연결했는데 숫자가 3000개가 넘었습니다(50분 이상). 그래서 제 질문은 '정말로 사용해야 할까요 nohup?' 입니다. 예/아니오라면 왜 그렇습니까?

# hostnamectl                                                                                                                                                                                                          
   Static hostname: my-server                                                                                                                                                                                                          
         Icon name: computer-vm                                                                                                                                                                                                              
           Chassis: vm                                                                                                                                                                                                                       
        Machine ID: XXXX                                                                                                                                                                                         
           Boot ID: XXXX                                                                                                                                                                                         
    Virtualization: vmware                                                                                                                                                                                                                   
  Operating System: Ubuntu 16.04.3 LTS                                                                                                                                                                                                       
            Kernel: Linux 4.4.0-116-generic                                                                                                                                                                                                  
      Architecture: x86-64 

내 스크립트 script.py:

import time

i = 0

while True:
  f = open('aaa.txt', 'a+')
  f.write('Doing somethign: {0}\n'.format(i))
  f.close()
  i = i + 1
  time.sleep(1)

답변1

이 작업은 bash 옵션에 의해 제어됩니다 huponexit. 설정을 확인하세요. "on"으로 설정하면 종료 시 모든 하위 프로세스에 한숨을 보냅니다. 그렇지 않은 경우 계속 실행해야 합니다.

$ shopt | grep huponexit
huponexit       off

관련 정보