Linux

[리눅스] nohup 명령어 완벽 가이드 사용법(백그라운드 실행)

인생아 2024. 10. 19. 11:11
반응형

리눅스에서 nohup(no hang up) 명령어는 터미널 세션이 종료되어도 백그라운드에서 프로세스를 계속 실행시킬 때 사용됩니다. 일반적으로 터미널을 닫거나 로그아웃하면 해당 세션에서 실행 중인 프로세스도 종료되지만, nohup을 사용하면 프로세스가 중단되지 않고 계속 실행됩니다. 주로 서버 작업이나 오래 걸리는 백그라운드 작업에 유용합니다.

nohup 명령어 기본 사용법

nohup [명령어] &

& 기호는 해당 명령어를 백그라운드에서 실행하도록 합니다. nohup을 사용하면 출력 결과가 자동으로 nohup.out 파일에 저장되며, 표준 출력표준 오류는 이 파일에 기록됩니다. 이때 파일은 명령을 실행한 현재 디렉토리에 생성되며, 명시적으로 파일을 지정할 수도 있습니다.

nohup [명령어] > [출력 파일] 2>&1 &

nohup 명령어 예제

예를 들어, myscript.sh 스크립트를 터미널 세션과 상관없이 백그라운드에서 실행하려면 다음과 같이 입력합니다.

user@linux:~/projects$ nohup ./myscript.sh &
nohup: ignoring input and appending output to 'nohup.out'

이 명령어는 myscript.sh 스크립트를 nohup으로 실행하고, 터미널을 닫더라도 스크립트가 계속 실행됩니다. nohup.out 파일에 스크립트 실행 결과가 저장됩니다.

터미널 세션을 유지한 상태로 명시적인 파일에 출력하고 싶다면:

user@linux:~/projects$ nohup ./myscript.sh > output.log 2>&1 &
[1] 12345

이 명령어는 myscript.sh의 실행 결과를 output.log 파일에 기록하며, 2>&1표준 오류표준 출력을 같은 파일에 기록하도록 설정합니다. [1] 12345는 백그라운드에서 실행 중인 작업의 작업 번호와 프로세스 ID입니다.

nohup 실행 확인

ps 명령어로 nohup으로 실행 중인 프로세스를 확인할 수 있습니다.

user@linux:~/projects$ ps aux | grep myscript.sh
user     12345  0.0  0.1  12345  2345 pts/0    S    12:34   0:00 ./myscript.sh

위 결과는 myscript.sh 스크립트가 프로세스 ID 12345로 실행 중인 것을 보여줍니다.

nohup 프로세스 종료

kill 명령어를 사용하여 nohup으로 실행된 프로세스를 종료할 수 있습니다. 프로세스 ID가 12345일 경우 다음과 같이 입력합니다.

user@linux:~/projects$ kill 12345

프로세스가 제대로 종료되지 않을 경우 -9 옵션을 사용하여 강제로 종료할 수 있습니다.

user@linux:~/projects$ kill -9 12345

nohup의 주요 특징

  1. 터미널 세션 종료와 관계없이 백그라운드에서 프로세스를 계속 실행
  2. nohup.out 파일에 실행 결과가 저장되며, 명시적으로 출력 파일을 지정 가능
  3. 백그라운드 실행을 위해 & 기호와 함께 사용
  4. kill 명령어로 프로세스를 중단할 수 있음

참고사이트

반응형