nohup : 백그라운드 프로세스 실행

2025. 2. 3. 13:15·Linux
반응형

nohup은 'no hang up'의 약자로, 터미널 세션이 종료되어도 프로세스가 계속 실행되도록 하는 Linux/Unix 명령어입니다. 서버 운영에서 매우 중요한 이 명령어의 사용법에 대해 자세히 알아보겠습니다.

기본 사용법

# 기본 형식
nohup command [arguments] &

# 예시: Python 스크립트 실행
nohup python3 app.py &

# 출력 리다이렉션
nohup python3 app.py > app.log 2>&1 &

출력 관리

nohup은 기본적으로 현재 디렉토리에 'nohup.out' 파일을 생성합니다.

# 특정 파일로 출력 리다이렉션
nohup ./my_script.sh > output.log &

# 표준 에러도 함께 리다이렉션
nohup ./my_script.sh > output.log 2>&1 &

# 출력 무시
nohup ./my_script.sh > /dev/null 2>&1 &

프로세스 관리

# 실행 중인 프로세스 확인
ps aux | grep "python3 app.py"

# PID 저장
nohup python3 app.py & echo $! > app.pid

# 프로세스 종료
kill $(cat app.pid)

실전 사용 예시

웹 서버 실행

# FastAPI 애플리케이션 실행
nohup uvicorn main:app --host 0.0.0.0 --port 8000 > server.log 2>&1 &

# 로그 실시간 모니터링
tail -f server.log

 

백업 스크립트 실행

# 백업 스크립트 실행
nohup ./backup.sh > backup.log 2>&1 &

# 백그라운드 작업 목록 확인
jobs

 

여러 명령어 연결

# 여러 명령어 실행
nohup sh -c '
 python3 script1.py
 python3 script2.py
 echo "완료"
' > process.log 2>&1 &

 

주의사항과 팁

PID 관리

# 스크립트로 PID 관리
#!/bin/bash
PID_FILE="app.pid"

if [ -f $PID_FILE ]; then
    kill $(cat $PID_FILE) 2>/dev/null
    rm $PID_FILE
fi

nohup python3 app.py & echo $! > $PID_FILE

 

로그 로테이션

# logrotate 설정 예시
/path/to/app.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
}

 

메모리 관리

# 메모리 사용량 모니터링
nohup sh -c '
    while true; do
        ps -o pid,ppid,%mem,rss,cmd -p $(cat app.pid)
        sleep 60
    done
' > memory_monitor.log 2>&1 &

 

자동 재시작

# 프로세스 자동 재시작 스크립트
#!/bin/bash
until python3 app.py; do
    echo "프로세스가 종료되었습니다. 3초 후 재시작..." >&2
    sleep 3
done

이러한 nohup의 다양한 사용법을 통해 서버에서 안정적으로 프로세스를 관리할 수 있습니다. 특히 운영 환경에서는 로그 관리와 프로세스 모니터링이 매우 중요하므로, 적절한 로깅 전략과 함께 사용하는 것이 좋습니다.

실제 운영 환경에서의 추천 사항

  1. 항상 로그 파일을 지정하여 사용
  2. PID 파일을 통한 프로세스 관리
  3. 주기적인 로그 로테이션 설정
  4. 메모리 사용량 모니터링
  5. 필요한 경우 자동 재시작 스크립트 구현

nohup은 단순해 보이지만, 서버 운영에 있어 매우 중요한 도구입니다. 적절히 활용하면 안정적인 서버 운영에 큰 도움이 될 것입니다.

저작자표시 비영리 변경금지 (새창열림)

'Linux' 카테고리의 다른 글

리눅스에서 3시간마다 인터넷 속도 자동 측정 시스템 구축하기  (0) 2025.03.20
PM2로 Node.js 애플리케이션 관리하기  (0) 2025.02.18
Sudoers : 권한 관리  (1) 2025.02.02
'Linux' 카테고리의 다른 글
  • 리눅스에서 3시간마다 인터넷 속도 자동 측정 시스템 구축하기
  • PM2로 Node.js 애플리케이션 관리하기
  • Sudoers : 권한 관리
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (725)
      • 스마트팜 (0)
      • 상품 추천 (223)
      • MongoDB (4)
      • 하드웨어 (17)
      • 일기장 (4)
      • 파이썬 (130)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (51)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    카페24리뷰이관
    리스트
    rtsp
    라떼우유
    learntocode
    유니티
    스마트스토어리뷰
    쇼핑몰리뷰
    파이썬
    Python
    믈레코비타멸균우유
    codingtips
    codingcommunity
    스크립트 실행 순서
    list
    programmerlife
    cv2
    리뷰관리
    C#
    셀레니움
    ipcamera
    appdevelopment
    스크립트 실행
    programming101
    리뷰이관
    긴유통기한우유
    unity
    카페24리뷰
    devlife
    상품 리뷰 크롤링
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
nohup : 백그라운드 프로세스 실행
상단으로

티스토리툴바