리눅스 명령어 / nohup
nohup 명령어
nohup은 no hang up의 약자로, 터미널을 닫거나 로그아웃해도 프로세스가 계속 실행되게 합니다.
사용법
예제
다음과 같은 001.sh 파일이 있습니다.
#!/bin/bash
for ((i=1;i<=5;i++));
do
sleep 6
echo $i
done
실행시키면 6초 후에 1, 6초 후에 2, 6초 후에 3, 6초 후에 4, 6초 후에 5를 출력합니다. 실행 완료에 총 30초가 걸립니다.
기본
- 001.sh를 터미널 종료 후에도 계속 실행합니다.
- 출력 결과는 nohup을 실행한 디렉토리에 nohup.out 파일로 저장됩니다.
[root@localhost bash]# nohup bash 001.sh
nohup: ignoring input and appending output to 'nohup.out'
nohup.out
1
2
3
4
5
- 이미 nohup.out이 있다면, 기존 내용 뒤에 추가합니다. 예를 들어 위 명령을 한번 더 실행하면 다음과 같이 됩니다.
1
2
3
4
5
1
2
3
4
5
백그라운드에서 실행
- &를 추가하면 001.sh를 백그라운드에서 실행합니다.
- 엔터키를 누른 후 다른 작업을 할 수 있습니다.
# nohup bash 001.sh &
- jobs 명령어로 상태를 확인할 수 있습니다.
[root@localhost bash]# nohup bash 001.sh &
[1] 3949
[root@localhost bash]# nohup: ignoring input and appending output to 'nohup.out'
[root@localhost bash]# jobs
[1]+ Running nohup bash 001.sh &
tail 명령어로 작업 진행 상황을 볼 수 있습니다.
[root@localhost bash]# tail -f nohup.out
프로세스 종료
- ps 명령어로 해당 작업에 대한 PID를 확인합니다.
# ps aux | grep 001.sh
root 1497 0.0 0.0 6948 3204 pts/0 S 08:54 0:00 bash 001.sh
root 1510 0.0 0.0 6384 1992 pts/0 S+ 08:55 0:00 grep --color=auto 001.sh
- kill 명령어로 프로세스를 종료합니다.
# kill 1497
출력 파일 변경
- 출력 결과를 log_001.txt에 기록합니다.
[root@localhost bash]# nohup bash 001.sh > log_001.txt &