Computer >> 컴퓨터 >  >> 시스템 >> Linux

리눅스 nohup 명령어란? 개념부터 실전 사용법까지 총정리

리눅스 nohup 명령어란? 개념부터 실전 사용법까지 총정리

리눅스 시스템에는 수많은 명령어가 존재합니다. 매일 여러 번 사용하는 명령어가 있는가 하면, 특수한 상황에서만 쓰이는 명령어도 있습니다. nohup은 바로 후자에 속하는 명령어입니다. 매일 사용하지는 않지만, 정말 필요한 순간이 오면 그 존재에 감사하게 되죠. 이번 글에서는 nohup이 무엇인지, 그리고 어떻게 활용하는지 자세히 알아보겠습니다.

nohup이란 무엇인가?

리눅스 nohup 명령어란? 개념부터 실전 사용법까지 총정리

nohup은 "No Hangups(연결 끊김 방지)"의 약자입니다. 이 명령어는 단독으로 실행하는 명령이 아니라, 한 번 시작된 작업을 리눅스 시스템이 중단하지 않도록 지시하는 보조 명령어입니다. 즉, 작업을 시작한 사용자가 로그아웃하더라도 해당 프로세스는 완료될 때까지 계속 실행됩니다.

이 점에서 nohup은 tmux나 screen과 비슷한 역할을 합니다. 프로세스를 시작해 놓고 로그아웃하거나 서버 연결이 끊기더라도 작업이 끝까지 진행되는지 걱정할 필요가 없게 해주는 것이죠. 사용법도 매우 간단합니다.

nohup sh your-script.sh &

명령어 끝에 붙은 &(앰퍼샌드)에 주목하세요. 이 기호는 명령을 백그라운드로 전환하여 현재 작업 중인 터미널을 계속 사용할 수 있게 해줍니다.

nohup은 터미널에서 실행하는 거의 모든 명령어와 함께 동작합니다. 직접 작성한 커스텀 스크립트는 물론, 표준 시스템 명령어나 CLI 유틸리티에도 적용할 수 있습니다. 예를 들어 원격 서버에서 보안 감사 스크립트를 실행해 놓고 연결을 끊고 자리를 비울 수도 있고, 시스템 업데이트를 백그라운드에서 중단 없이 진행하고 싶을 때도 유용하게 사용할 수 있습니다.

nohup.out 파일 이해하기

nohup으로 실행된 프로세스는 시작한 사용자와 독립적으로 동작하기 때문에, 출력 메시지나 오류를 기록할 곳이 필요합니다. 더 이상 연결된 터미널이 없기 때문에, nohup은 모든 출력을 nohup.out이라는 파일에 기록합니다.

기본적으로 이 파일은 명령어를 실행한 디렉터리에 생성됩니다. nohup.out의 특징은 표준 출력(standard output)과 오류 출력(error output)이 하나의 파일에 함께 기록된다는 점입니다. nohup은 기본적으로 두 출력을 같은 파일로 리다이렉트합니다.

리눅스 nohup 명령어란? 개념부터 실전 사용법까지 총정리

반드시 nohup.out을 사용해야 하는 것은 아닙니다. 이것은 어디까지나 기본값일 뿐입니다. nohup 실행 시 원하는 출력 파일과 저장 위치를 직접 지정할 수 있습니다.

nohup sh your-script.sh > /path/to/custom.out &

커스텀 출력 파일에는 기본 nohup.out과 동일한 데이터가 기록됩니다. 앞서 언급한 보안 감사 스크립트 예시를 들어보겠습니다. 출력 파일 이름을 audit-script-output.txt로 지정하고 마운트된 원격 폴더에 저장하면, 일일이 cat 명령으로 로그를 뒤질 필요 없이 노트북에서 편안하게 서버의 보안 상태를 확인할 수 있습니다.

nohup과 데몬(Daemon)의 차이점

여기까지 읽으셨다면 nohup과 데몬화(daemonized)된 프로세스의 차이가 궁금해질 것입니다. 겉보기에는 비슷한 목적을 수행하는 것 같지만, 실제로는 그렇지 않습니다.

데몬은 백그라운드에서 지속적으로 실행되는 프로세스입니다. 웹 서버처럼 절대 종료되면 안 되는 상시 프로세스에 적합합니다. 다만 프로그래밍 난이도가 높아 간단한 일회성 스크립트에는 부적합합니다.

반면 nohup은 단발성 작업을 위한 도구입니다. 실행 시간은 길지만 결국에는 종료되는 스크립트를 생각해 보세요. 가끔씩 실행해야 하는 복잡한 작업이 몇 시간씩 걸린다면, 터미널을 열어두거나 사용자 세션을 유지할 필요 없이 nohup으로 백그라운드 실행하면 됩니다. 출력 역시 기본값인 nohup.out이든 직접 지정한 파일이든 원하는 위치에 깔끔하게 기록됩니다.

마무리

nohup은 장시간 실행되는 작업을 안전하게 백그라운드에서 처리할 수 있게 해주는 강력한 도구입니다. SSH 연결이 불안정한 환경이나 대용량 배치 작업을 자주 다루는 관리자라면 반드시 익혀두어야 할 필수 명령어입니다.

이 글이 유익했다면 파일 권한(file permissions) 이해하기, 느려진 리눅스 머신 최적화하기 등 다른 리눅스 관련 콘텐츠도 함께 확인해 보세요.