리눅스 환경에서 nohup 사용 방법에 대해 알아보겠습니다.
nohup
- nohup 은 No Hang Ups의 약자로 백그라운드로 지속적으로 실행하는 프로세스를 의미합니다.
- nohup 은 실행을 현재 사용자 세션이 아닌 운영체제가 제공하는 백그라운드 공간에서 실행을 한다.
- & 는 사용자 세션에서 실행되며, 화면 출력만 백그라운드로 전환한 상태입니다. 즉 & 로 실행된 프로세스는 사용자 세션이 로그아웃되는 시점에 같이 종료되는 것입니다.
- 애플리케이션 실행할 때 터미널을 종료해도 애플리케이션은 계속 구동될 수 있도록
nohup
명령어를 사용합니다.
실행
기본 실행
nohup
명령어를 사용하여 실행합니다.
nohup 으로 실행시킬 파일은 반드시 755 퍼미션을 가지고 있어야 합니다.
1 | nohup [실행파일명] |
예시입니다.
1 | nohup ./run.sh |
실행을 하면 “nohup: ignoring input and appending output to ‘nohup.out’” 메세지와 함께 해당 프로그램의 nohup 을 실행시킨 경로에 nohup.out
파일이 생성되고 표준출력 내용이 출력됩니다.
백그라운드 실행
&
명령어를 맨 끝에 불여서 사용하면 백그라운드로 실행됩니다.
1 | nohup [실행파일명] & |
예시입니다.
1 | nohup ./run.sh & |
파일 저장
표준출력과 표준에러 같은 파일 저장
2>&1
을 추가하면 표준 출력(1)과 표준 에러(2)를 한 파일에 저장됩니다.
1 | nohup [실행파일명] 2>&1 |
예시입니다.
1 | nohup ./run.sh 2>&1 |
표준출력과 표준에러 다른 파일 저장
표준 출력(1)은 run_output.out 파일로 저장하고, 표준 에러(2)는 run_output.err 파일로 저장됩니다.
1 | nohup ./run.sh 1 > run_output.out 2 > run_output.err |
표준출력 다른 위치에 저장
표준 출력을 nohup.out이 아닌 다른 이름의 파일이나 다른 위치에 저장하려면 다음 명령어를 사용합니다.
1 | nohup [실행파일명] > [파일위치] |
예시입니다.
1 | nohup ./run.sh > /data/run_output.out |
표준출력 남지기 않도록
표준 출력을 별도로 남기고 싶지 않다면 /dev/null
를 추가합니다.
1 | nohup [실행파일명] > /dev/null |
예시입니다.
1 | nohup ./run.sh > /dev/null |
실행 프로세스 확인
백그라운드 실행의 경우 다음 명령어를 통해 실행 중인 프로세스 상태를 확인할 수 있습니다.
1 | ps -ef | grep run.sh |
프로세스 종료
백그라운드로 실행 중인 프로세스를 종료하는 방법입니다. 먼저 프로세스 아이디를 찾고 종료를 합니다.
1 | ps -ef | grep run.sh |
프로세스 아이디를 입력하여 종료합니다.
1 | kill -9 [프로세스 아이디] |
여기까지 nohup 사용 방법에 대해 알아보았습니다.