nohup

Daniel·2023년 4월 3일
0

정의

Nohup은 프로세스를 시작한 사용자가 로그아웃한 후에도 프로세스를 계속 실행할 수 있도록 하는 Unix 명령이다.
이름에서 볼 수 있듯 nohup은 No Hang Ups의 약자로 백그라운드로 지속적으로 실행하는 프로세스를 의미한다.

목적

Nohup의 주요 목적은 프로세스를 시작한 터미널 또는 셸 세션이 닫히거나 종료된 경우에도 프로세스가 계속 실행되도록 해준다.
이는 장기 실행 작업이나 중단을 원하지 않는 작업을 실행해야 할 때 유용합니다.

작동 방식

프로세스가 Nohup 명령으로 시작되면 터미널에서 분리되고 운영체제의 백그라운드에서 실행된다.
즉, 프로세스가 계속 실행되기 위해 터미널에 의존하지 않고 터미널이 닫히거나 사용자가 로그아웃하더라도 계속 실행될 수 있다.

nohup 왜 쓰는거야?

  • 프로세스를 시작한 사용자가 로그아웃한 후에도 프로세스를 계속 실행할 수 있다.
  • 프로세스가 Nohup으로 시작되면 터미널에서 자동으로 연결 해제된다.
    즉, 프로세스는 계속 실행하기 위해 터미널에 의존하지 않으며 터미널이 닫혀 있어도 계속 실행된다는 말이다.

nohup 사용법

  • 기본 구문

    nohup command-name : nohup 이후 실행하고자 하는 프로세스나 스크립트를 적어준다.
    nohup command-name & : 백그라운드로 실행시 뒤에 & 을 붙여주면 된다.

    일반적으로 nohup 실행 시 nohup.out 이라는 log파일(백그라운드 실행/출력 log)이 같이 생성된다.

  • 출력 리디렉션

    • nohup 실행 시 nohup.out(로그파일) 생성하지 않기

      log 파일을 생성하지 않기 위해 nohup 실행과 출력을 /dev/null 로 보내는 명령어를 사용
      nohup command-name 1>/dev/null & : 표준출력의 결과를 /dev/null로 보냄
      nohup command-name 1>/dev/null 2>&1 & : 표준출력(1)의 결과를 /dev/null로 보내 버리고, 표준에러(2)를 표준출력(1)이 전달되는 곳으로 같이 보냄

      • 숫자의 의미
        0 : 표준입력
        1 : 표준출력
        2 : 표준에러
    • nohup.out(로그파일) 경로 또는 파일명 변경

      > || >> 를 이용해 다른파일에 출력할 수 있다. 단, 폴더생성 후 실행해야 한다.

      1. 출력과 에러를 다른 파일에 쓰고 싶어
        nohup command-name 1 > nohup.out 2 > nohup.err &
      2. 출력과 에러를 같은 파일에 쓰고 싶어
        nohup command-name 1 > nohup.out 2>&1 &
    `ps -ef | grep filename.sh` : 백그라운드 실행의 경우 실행중인 내용은 프로세스 상태를 통해서만 확인이 가능하다.  
    `kill -9 PID` : 위에서 확인한 PID를 사용해 프로세스를 종료할 수 있다.

한계 및 단점

Nohup은 유용한 도구이지만 기능면에서 몇 가지 제한이 있다.

  1. Nohup으로 시작된 프로세스는 백그라운드에서 실행 중이므로 상호 작용할 수 없습니다.
  2. 프로세스를 중지, 일시 중지 또는 재개할 수 없습니다.
  3. Nohup은 프로세스 상태를 추적하는 방법을 제공하지 않습니다. nohup.out 파일을 수동으로 확인하거나 ps 명령을 사용하여 프로세스 상태를 확인해야 합니다.
profile
응애 나 애기 개발자

0개의 댓글