리눅스에서 nohup(no hang up) 명령어는 터미널 세션이 종료되어도 백그라운드에서 프로세스를 계속 실행시킬 때 사용됩니다. 일반적으로 터미널을 닫거나 로그아웃하면 해당 세션에서 실행 중인 프로세스도 종료되지만, nohup을 사용하면 프로세스가 중단되지 않고 계속 실행됩니다. 주로 서버 작업이나 오래 걸리는 백그라운드 작업에 유용합니다.
nohup 명령어 기본 사용법
nohup [명령어] &
& 기호는 해당 명령어를 백그라운드에서 실행하도록 합니다. nohup을 사용하면 출력 결과가 자동으로 nohup.out 파일에 저장되며, 표준 출력과 표준 오류는 이 파일에 기록됩니다. 이때 파일은 명령을 실행한 현재 디렉토리에 생성되며, 명시적으로 파일을 지정할 수도 있습니다.
nohup [명령어] > [출력 파일] 2>&1 &
nohup 명령어 예제
예를 들어, myscript.sh 스크립트를 터미널 세션과 상관없이 백그라운드에서 실행하려면 다음과 같이 입력합니다.
user@linux:~/projects$ nohup ./myscript.sh &
nohup: ignoring input and appending output to 'nohup.out'
이 명령어는 myscript.sh 스크립트를 nohup으로 실행하고, 터미널을 닫더라도 스크립트가 계속 실행됩니다. nohup.out 파일에 스크립트 실행 결과가 저장됩니다.
터미널 세션을 유지한 상태로 명시적인 파일에 출력하고 싶다면:
user@linux:~/projects$ nohup ./myscript.sh > output.log 2>&1 &
[1] 12345
이 명령어는 myscript.sh의 실행 결과를 output.log 파일에 기록하며, 2>&1은 표준 오류와 표준 출력을 같은 파일에 기록하도록 설정합니다. [1] 12345는 백그라운드에서 실행 중인 작업의 작업 번호와 프로세스 ID입니다.
nohup 실행 확인
ps 명령어로 nohup으로 실행 중인 프로세스를 확인할 수 있습니다.
user@linux:~/projects$ ps aux | grep myscript.sh
user 12345 0.0 0.1 12345 2345 pts/0 S 12:34 0:00 ./myscript.sh
위 결과는 myscript.sh 스크립트가 프로세스 ID 12345로 실행 중인 것을 보여줍니다.
nohup 프로세스 종료
kill 명령어를 사용하여 nohup으로 실행된 프로세스를 종료할 수 있습니다. 프로세스 ID가 12345일 경우 다음과 같이 입력합니다.
user@linux:~/projects$ kill 12345
프로세스가 제대로 종료되지 않을 경우 -9 옵션을 사용하여 강제로 종료할 수 있습니다.
user@linux:~/projects$ kill -9 12345
nohup의 주요 특징
- 터미널 세션 종료와 관계없이 백그라운드에서 프로세스를 계속 실행
- nohup.out 파일에 실행 결과가 저장되며, 명시적으로 출력 파일을 지정 가능
- 백그라운드 실행을 위해 & 기호와 함께 사용
- kill 명령어로 프로세스를 중단할 수 있음
참고사이트
'Linux' 카테고리의 다른 글
[리눅스] vmstat 명령어 완벽 가이드 사용법(시스템 성능 통계 확인) (0) | 2024.10.19 |
---|---|
[리눅스] iptables 명령어 완벽 가이드 사용법(방화벽 설정) (0) | 2024.10.19 |
[리눅스] netcat 명령어 완벽 가이드 사용법(네트워크 디버깅) (0) | 2024.10.19 |
[리눅스] strace 명령어 완벽 가이드 사용법(프로세스 추적) (0) | 2024.10.19 |
[리눅스] nice, renice 명령어 완벽 가이드 사용법(프로세스 우선순위 변경) (0) | 2024.10.18 |
[리눅스] iostat 명령어 완벽 가이드 사용법(디스크 I/O 성능 확인) (0) | 2024.10.18 |
[리눅스] lsof 명령어 완벽 가이드 사용법(네트워크 연결 상태 확인) (0) | 2024.10.18 |
[리눅스] umask 명령어 완벽 가이드 사용법(파일/디렉토리 기본권한 설정) (0) | 2024.10.18 |