[CentOS] nohup 사용 방법

리눅스 환경에서 nohup 사용 방법에 대해 알아보겠습니다.

nohup

  • nohup 은 No Hang Ups의 약자로 백그라운드로 지속적으로 실행하는 프로세스를 의미합니다.
  • nohup 은 실행을 현재 사용자 세션이 아닌 운영체제가 제공하는 백그라운드 공간에서 실행을 한다.
  • & 는 사용자 세션에서 실행되며, 화면 출력만 백그라운드로 전환한 상태입니다. 즉 & 로 실행된 프로세스는 사용자 세션이 로그아웃되는 시점에 같이 종료되는 것입니다.
  • 애플리케이션 실행할 때 터미널을 종료해도 애플리케이션은 계속 구동될 수 있도록 nohup 명령어를 사용합니다.

실행

기본 실행

nohup 명령어를 사용하여 실행합니다.

nohup 으로 실행시킬 파일은 반드시 755 퍼미션을 가지고 있어야 합니다.

1
$ nohup [실행파일명]

예시입니다.

1
$ nohup ./run.sh

실행을 하면 “nohup: ignoring input and appending output to ‘nohup.out’” 메세지와 함께 해당 프로그램의 nohup 을 실행시킨 경로에 nohup.out 파일이 생성되고 표준출력 내용이 출력됩니다.

백그라운드 실행

& 명령어를 맨 끝에 불여서 사용하면 백그라운드로 실행됩니다.

1
$ nohup [실행파일명] &

예시입니다.

1
$ nohup ./run.sh &

파일 저장

표준출력과 표준에러 같은 파일 저장

2>&1을 추가하면 표준 출력(1)과 표준 에러(2)를 한 파일에 저장됩니다.

1
$ nohup [실행파일명] 2>&1

예시입니다.

1
$ nohup ./run.sh 2>&1

표준출력과 표준에러 다른 파일 저장

표준 출력(1)은 run_output.out 파일로 저장하고, 표준 에러(2)는 run_output.err 파일로 저장됩니다.

1
$ nohup ./run.sh 1 > run_output.out 2 > run_output.err

표준출력 다른 위치에 저장

표준 출력을 nohup.out이 아닌 다른 이름의 파일이나 다른 위치에 저장하려면 다음 명령어를 사용합니다.

1
$ nohup [실행파일명] > [파일위치]

예시입니다.

1
$ nohup ./run.sh > /data/run_output.out

표준출력 남지기 않도록

표준 출력을 별도로 남기고 싶지 않다면 /dev/null를 추가합니다.

1
$ nohup [실행파일명] > /dev/null

예시입니다.

1
$ nohup ./run.sh > /dev/null

실행 프로세스 확인

백그라운드 실행의 경우 다음 명령어를 통해 실행 중인 프로세스 상태를 확인할 수 있습니다.

1
$ ps -ef | grep run.sh

프로세스 종료

백그라운드로 실행 중인 프로세스를 종료하는 방법입니다. 먼저 프로세스 아이디를 찾고 종료를 합니다.

1
$ ps -ef | grep run.sh

프로세스 아이디를 입력하여 종료합니다.

1
$ kill -9 [프로세스 아이디]

여기까지 nohup 사용 방법에 대해 알아보았습니다.

Share