Linux

[Linux] nohup 과 & 차이점 및 사용법

IT-PAPA 2024. 2. 2. 06:11
반응형

nohup과 &은 프로세스를 백그라운드에서 실행하는 데 사용되지만, 몇 가지 차이점이 있습니다.

  1. 프로세스 분리:
    • nohup: 프로세스를 독립적으로 실행하며, 터미널 세션이 종료되어도 계속 실행됩니다. 표준 입출력은 nohup.out 파일에 리다이렉트됩니다.
    • &: 프로세스를 백그라운드에서 실행하지만, 터미널 세션이 종료되면 프로세스도 종료될 수 있습니다.
  2. 출력 관리:
    • nohup: 표준 출력 및 표준 에러를 파일로 리다이렉트하므로, 백그라운드에서 실행 중인 프로세스의 출력을 파일로 저장할 수 있습니다.
    • &: 출력은 터미널에 표시되거나, 필요한 경우 리다이렉트할 수 있지만, 기본적으로는 터미널에 출력됩니다.
  3. 프로세스 그룹:
    • nohup: 프로세스는 새로운 프로세스 그룹을 형성하며, 터미널과는 독립적으로 관리됩니다.
    • &: 프로세스는 기존 프로세스 그룹에 속하며, 터미널과의 연관이 있을 수 있습니다.

사용 시나리오에 따라 적절한 옵션을 선택하면 됩니다. nohup은 장기 실행이 필요한 작업에 유용하며, &는 일시적인 작업에 사용될 수 있습니다.

- nohup 명령어 사용법

옵션 설명 예제
-c 명령어를 실행하고 종료 전에 명령어를 추가 실행 nohup -c "command1; command2" &
-f nohup.out 파일에 출력을 추가 nohup -f command &
-p 특정 프로세스 그룹 ID를 지정 nohup -p process_group_id command &
-l 로깅을 nohup.out 대신 파일에 기록 nohup -l output.log command &
-o 표준 출력을 지정된 파일로 리다이렉션 nohup -o output.txt command &
-e 표준 에러를 지정된 파일로 리다이렉션 nohup -e error.txt command &
-append 출력 파일에 내용을 추가 nohup -o output.txt -append command &
-s 실행 중인 프로세스에 SIGHUP 신호를 보내지 않음 nohup -s command &
-bg 프로세스를 백그라운드로 실행 (동의어) nohup -bg command &
-- 옵션의 끝을 나타냄 nohup -- -c "command with leading dash" &

 

- nohup 과 & 가 같이 사용하는 이유는 터미널 세션 종료 시에도 프로세스가 계속 실행되도록 하기 위함입니다.

  • & (백그라운드 실행): 이 옵션은 명령어를 백그라운드에서 실행하도록 합니다. 터미널에서 프로세스를 실행한 후에도 다른 명령어를 입력할 수 있게 해줍니다.
  • nohup: 이 명령어는 터미널 세션 종료 후에도 프로세스를 계속 실행하도록 합니다. 또한, nohup.out 파일에 표준 출력과 표준 에러를 리다이렉트하여 기록합니다.

nohup만 사용하면 터미널 세션이 종료되면 백그라운드에서 실행 중인 프로세스도 종료될 수 있습니다. 그러나 &를 추가하면 해당 프로세스가 터미널 세션과 독립적으로 계속 실행되도록 보장합니다.

예를 들어, 다음 명령어는 터미널에서 실행 중인 프로세스를 백그라운드에서 실행하고, 터미널 세션 종료 후에도 계속 실행되도록 합니다:

728x90
반응형
LIST