nohup — 로그아웃 후에도 실행 유지
Linux / 서비스 및 프로세스 관리 / nohup.html
터미널이 끊겨도 프로세스가 계속 실행되도록 신호를 무시하고 출력을 파일로 돌리는 도구.
기본 정보
| 명령어 이름 | nohup |
|---|---|
| 한 줄 소개 | 터미널이 끊겨도 프로세스가 계속 실행되도록 신호를 무시하고 출력을 파일로 돌리는 도구. |
| 제공 | GNU coreutils (기본 탑재) |
| 공식 문서 | https://man7.org/linux/man-pages/man1/nohup.1.html |
| 지원 운영체제 | Linux, macOS, BSD |
| 설치 여부 | 기본 탑재 (별도 설치 불필요) |
| 분류 | 리눅스 서비스·프로세스 (태그: 프로세스·자원 관리 (태그: 백그라운드, 세션, 로그아웃)) |
이 명령어는 무엇인가?
nohup은 SIGHUP을 무시하도록 설정하고 표준 출력과 오류를 기본적으로 nohup.out에 기록합니다.
SSH 세션이 끊겨도 오래 걸리는 작업을 유지해야 할 때 가장 간단한 방법입니다.
어떤 문제를 해결하는가?
- 장시간 백업을 SSH 종료 후에도 계속 실행합니다.
- 세션 끊김으로 빌드가 중단되는 것을 막습니다.
- 출력을 파일로 남겨 나중에 확인합니다.
- 임시 배치 작업을 백그라운드로 돌립니다.
주요 기능
신호 무시
HUP 신호를 무시하도록 자식 프로세스를 실행합니다.
- 활용 상황: 세션이 끊길 수 있는 환경
- 얻는 결과: 로그아웃 후에도 계속 실행
- 제한 사항: KILL 신호에는 여전히 종료됨
출력 리다이렉트
출력이 터미널이 아니면 nohup.out에 덧붙입니다.
- 활용 상황: 실행 로그를 남길 때
- 얻는 결과: nohup.out 파일에 기록
- 제한 사항: 파일이 계속 커질 수 있음
백그라운드 결합
명령 끝에 &를 붙여 셸을 바로 돌려받습니다.
- 활용 상황: 대화형 셸을 계속 쓸 때
- 얻는 결과: 백그라운드에서 도는 작업
- 제한 사항: 종료 여부는 별도로 확인해야 함
설치 및 실행
설치 여부 확인
nohup --version
apt install coreutils # usually already present
실제 사용 예제
백그라운드 실행
세션이 끊겨도 계속 도는 작업을 시작합니다.
# Keep running after logout, in the background
nohup ./long-task.sh &
출력 파일 지정
nohup.out 대신 원하는 경로에 기록합니다.
# Write output to a specific file
nohup ./backup.sh > /var/log/backup.log 2>&1 &
실행 확인
jobs와 ps로 상태를 확인합니다.
# Confirm the job is still alive
ps -ef | grep long-task