1. nohup이란?
nohup은 "no hangup"의 줄임말로, 터미널 세션이 끊겨도 프로세스를 계속 실행할 수 있도록 도와주는 리눅스/유닉스 명령어입니다. 예를 들어, 서버에서 긴 시간이 걸리는 스크립트나 작업을 실행할 때, SSH 세션이 종료되더라도 작업을 중단 없이 계속 실행할 수 있습니다.
2. nohup 기본 사용법
기본적으로 nohup은 다음과 같은 형식으로 사용됩니다:
nohup [실행할 명령어] &
&는 명령어를 백그라운드에서 실행하기 위한 기호입니다. 이 기호를 사용하면 해당 프로세스가 백그라운드에서 계속 실행됩니다.
예시:
nohup python my_script.py &
이 명령은 my_script.py 스크립트를 백그라운드에서 실행하고, 터미널이 종료되더라도 계속 실행되도록 설정합니다.
3. nohup 출력 관리
nohup을 사용하면 기본적으로 실행 결과가 nohup.out 파일에 저장됩니다. 이 파일은 현재 디렉토리 또는 홈 디렉토리에 생성되며, 실행한 명령의 출력 로그를 저장합니다.
예시:
nohup python my_script.py &
위 명령어를 실행하면 nohup.out 파일이 생성되고, 여기에 my_script.py의 출력 결과가 기록됩니다.
출력을 다른 파일로 리다이렉션하는 방법:
nohup python my_script.py > output.log 2>&1 &
이 명령은 실행 결과를 **output.log**라는 파일에 기록하며, 에러 출력도 이 파일에 포함됩니다.
- > output.log: 일반 출력(stdout)을 output.log 파일로 저장
- 2>&1: 에러 출력(stderr)을 일반 출력에 포함
4. 백그라운드에서 실행된 작업 확인
백그라운드에서 실행된 프로세스는 터미널을 종료해도 계속 실행됩니다. 현재 실행 중인 프로세스를 확인하려면 jobs 또는 ps 명령어를 사용할 수 있습니다.
jobs 명령어:
jobs
현재 터미널에서 실행된 백그라운드 작업을 확인할 수 있습니다.
ps 명령어:
ps aux | grep my_script.py
ps aux 명령어는 시스템에서 실행 중인 모든 프로세스를 나열하고, grep을 사용하여 특정 프로세스를 필터링합니다.
5. 백그라운드 프로세스 종료
백그라운드에서 실행 중인 프로세스를 종료하려면 kill 명령어를 사용할 수 있습니다. 먼저, 해당 프로세스의 PID(프로세스 ID)를 찾아야 합니다.
PID 찾기:
ps aux | grep my_script.py
프로세스 종료:
kill [PID]
6. nohup과 함께 사용하는 유용한 명령어들
disown
nohup을 사용하지 않고 백그라운드로 보낸 작업을 터미널 세션 종료 후에도 계속 실행되도록 하고 싶다면 disown 명령어를 사용할 수 있습니다.
python my_script.py & disown
disown은 백그라운드에서 실행된 프로세스를 현재 터미널 세션에서 분리하는 명령어입니다. 터미널을 종료해도 해당 프로세스는 계속 실행됩니다.
screen과 tmux
nohup은 단순하게 프로세스를 백그라운드에서 실행할 때 사용되지만, 더 고급 기능이 필요한 경우 screen이나 tmux 같은 터미널 멀티플렉서를 사용할 수 있습니다. 이 도구들은 여러 세션을 열어 작업을 관리하고, 세션을 분리하고 재접속하는 기능을 제공합니다.
7. 사용 사례
다음은 nohup을 사용한 실제 사례입니다.
장시간 실행되는 머신러닝 모델 학습:
nohup python train_model.py > train_output.log 2>&1 &
서버 유지 관리 작업:
nohup ./backup_script.sh > backup.log 2>&1 &
이렇게 설정하면 장시간 실행되는 스크립트나 백업 작업을 터미널이 닫히더라도 계속 실행할 수 있습니다.
8. 결론
nohup은 터미널 세션이 종료되더라도 프로세스를 계속 실행할 수 있게 해주는 매우 유용한 리눅스 명령어입니다. 장시간 실행되는 작업을 백그라운드에서 안정적으로 실행할 수 있게 도와주며, 백업 작업, 머신러닝 모델 학습, 데이터 처리 등 다양한 작업에 유용하게 활용할 수 있습니다.
참고 사항:
- 프로세스가 종료되면 출력을 기록한 nohup.out 파일이 생성됩니다.
- 출력을 특정 파일로 리다이렉션하려면 > output.log 2>&1 형식을 사용하세요.
- disown 명령어를 통해 기존의 백그라운드 작업을 nohup처럼 처리할 수 있습니다.
Reference
https://www.baeldung.com/linux/nohup-command-tutorial
'Linux' 카테고리의 다른 글
[Linux] NVIDIA GPU 모니터링 명령어와 효율적인 활용법 (0) | 2024.11.18 |
---|---|
[Linux] 실무에서 자주 쓰는 Linux명령어 모음 (2) | 2024.10.18 |