50% 할인 모든 플랜, 기간 한정. 시작 가격 $2.48/mo
읽는 데 8분
서버 및 OS

Linux에서 nohup 명령어 사용법: 문법, 활용 사례 및 예제

에이다 러브굿 By 에이다 러브굿 읽는 데 8분 2024년 7월 14일 업데이트됨
nohup 명령어

Linux 개발자라면 세션의 일관성과 안정성이 얼마나 중요한지 잘 알고 있을 것입니다. Linux에서 오래 실행되는 프로세스는 세션에서 로그아웃한 후에도 계속 동작해야 합니다. 다행히 Linux에는 이를 위한 전용 명령어가 있습니다. nohup 명령어 명령어를 사용하면 백그라운드에서 중단 없이 프로세스를 실행할 수 있습니다. 이를 통해 데이터 손실을 방지하고 소중한 시간을 절약할 수 있습니다. 이 가이드에서는 Linux nohup 명령어의 문법과 옵션부터 실제 사용 예시와 일반적인 오류 해결법까지 필요한 모든 내용을 다룹니다.

Linux nohup 문법 이해하기

nohup 명령어는 사용법이 간단합니다. 터미널에서 로그아웃한 후에도 명령어나 스크립트가 계속 실행되도록 백그라운드에서 동작시킬 수 있습니다. 사용 방법은 다음과 같습니다:

nohup [command] [arguments] &

다음을 [command] 실행하려는 명령어나 스크립트로 바꾸면 됩니다. 그리고 [argument] 에는 해당 명령어에 필요한 인수나 옵션을 입력합니다. & 기호를 사용하면 명령어가 백그라운드에서 실행됩니다. 예시를 살펴보겠습니다:

nohup myscript.sh &

이 예제에서 myscript.sh 는 터미널을 닫아도 계속 실행되는 bash 스크립트입니다. 출력 결과는 기본적으로 nohup.out 라는 파일로 리디렉션됩니다. 다른 경로를 지정하지 않는 한 이 파일이 기본값입니다.

nohup 옵션 살펴보기

nohup 명령어 자체에는 옵션이 많지 않지만, 다양한 명령어 및 리디렉션 기법과 함께 효과적으로 활용하면 더욱 강력하게 사용할 수 있습니다. 먼저 nohup 명령어에 대한 정보를 확인하는 방법을 알아보겠습니다:

nohup –-help 
nohup --version

이 두 명령어는 nohup의 도움말 메시지와 버전 정보를 출력하여 유용한 정보를 제공합니다.

nohup 명령어로 프로세스 실행하기

nohup 명령어로 프로세스를 실행하려면, 앞서 설명한 것과 동일한 구조를 따르면 됩니다:

nohup [command]

백그라운드에서 프로세스를 실행하려면 다음을 추가하세요 & 명령어 끝에 추가하세요.

nohup 명령어로 여러 프로세스를 백그라운드에서 실행하기

그렇다면 nohup 명령어로 여러 프로세스를 동시에 백그라운드에서 실행하려면 어떻게 해야 할까?

nohup bash -c '[command A] && [command B]' &

바꾸기 [command A][command B] 백그라운드에서 실행할 명령어들을 함께 사용할 수 있습니다. 예를 들어 시스템 패키지를 먼저 업데이트한 다음 불필요한 파일을 정리하려고 할 때, nohup 명령어로 이렇게 처리할 수 있습니다:

nohup bash -c 'sudo apt-get update && sudo apt-get autoremove -y' &

이 예제에서 nohup 업데이트와 정리 작업을 모두 백그라운드에서 계속 실행할 수 있습니다. 터미널을 열어 두지 않아도 시스템 유지 관리 작업이 완료됩니다.

출력 경로 직접 지정하기

이 프로세스의 출력은 다음 경로로 리디렉션됩니다 nohup.out 기본값으로 설정되어 있습니다. 출력 경로를 변경하고 싶다면 다음과 같이 하면 됩니다:

nohup [command] > [/path/to/new/output.txt]

다음 파일의 값을 교체하는 것을 잊지 마세요 [] 원하는 명령어와 파일 경로를 입력하세요.

nohup과 다른 명령어 함께 사용하기

nohup은 다른 명령어나 파이프와 조합해 강력한 명령 체인을 만들 수 있습니다. 예시를 살펴보겠습니다:

nohup find / -name "*.log" | xargs grep "ERROR" > error_logs.txt 2>&1 &

여기서 찾기 명령어는 로그 파일을 검색하고 grep 은 "ERROR" 문자열을 검색하는 데 사용됩니다. 결합된 출력은 error_logs.txt.

이 섹션에서는 nohup 명령어의 주요 옵션과 활용 사례를 살펴봤습니다. 이 내용을 익혀두면 nohup을 활용해 Linux 프로세스를 백그라운드에서 효과적으로 실행할 수 있습니다.

자주 발생하는 오류와 해결 방법

nohup 명령어는 대체로 간단하게 사용할 수 있지만, 실행 중에 몇 가지 오류가 발생할 수 있습니다. 어떤 오류가 자주 나타나는지 파악하고 해결 방법을 알아두면 시간을 아낄 수 있습니다. 흔히 발생하는 오류와 그 대처법을 살펴보겠습니다.

권한 없음

이 오류는 실행하려는 스크립트나 명령어에 실행 권한이 없을 때 발생합니다. 오류 출력은 다음과 같습니다: nohup: 명령 'myscript.sh' 실행 실패: 권한이 없습니다

이 문제를 해결하려면 스크립트 또는 명령어에 올바른 권한이 설정되어 있는지 확인해야 합니다. 다음 명령어로 실행 권한을 추가할 수 있습니다: chmod 명령:

chmod +x myscript.sh 
nohup ./myscript.sh &

명령어를 찾을 수 없음

이 오류는 명령어나 스크립트가 지정된 경로에 존재하지 않거나 PATH에 등록되어 있지 않을 때 발생합니다. 오류 출력은 다음과 같습니다: nohup: 'myscript.sh' 명령 실행 실패: 해당 파일 또는 디렉터리가 없습니다

이 오류를 해결하려면 명령어나 스크립트가 존재하는지, 올바른 디렉터리에 있는지 확인하세요. 스크립트의 절대 경로를 직접 지정해야 할 수도 있습니다:

nohup /path/to/myscript.sh &

또한 해당 명령어가 설치되어 있고 PATH에 등록되어 있는지 확인하세요.

출력 없음

터미널이나 출력 파일에 아무것도 표시되지 않는 경우가 있습니다. 명령이 실행되고 있는데도 출력이 보이지 않는다면, 출력이 기본 파일이 아닌 다른 경로로 리디렉션되거나 파일 권한 문제가 있을 수 있습니다. 이 문제를 해결하려면 출력 파일을 명시적으로 지정해 리디렉션이 올바르게 이루어지도록 해야 합니다:

nohup myscript.sh > output.log 2>&1 &

예를 들어, 다음 명령은 표준 출력과 표준 오류를 모두 아래 이름의 파일로 리디렉션합니다. output.log.

스크립트가 백그라운드에서 실행되지 않음

스크립트나 명령어가 실행되는 것처럼 보이지만 백그라운드에서 동작하지 않는 경우가 있습니다. 원인은 대개 단순합니다. 다음을 추가하는 것을 잊었을 수 있습니다. & 명령어 끝에 해당 기호를 추가하면 백그라운드에서 실행됩니다. 해결 방법은 간단합니다. 해당 기호를 추가했는지 확인하면 됩니다.

프로세스 중단 또는 응답 없음

nohup으로 시작한 프로세스가 멈추거나 응답하지 않을 수 있습니다. 프로세스가 입력을 기다리거나 접근하려는 리소스에 문제가 있을 때 발생합니다. 이 문제에 대한 해결 방법은 두 가지입니다:

  • 필요한 입력 확인: 명령어가 대화형 입력을 요구하지 않는지 확인하세요.
  • 리소스 문제: 명령어가 필요한 리소스(예: 파일, 네트워크)에 접근할 수 있는지 확인하세요.

nohup.out 덮어쓰기

nohup 명령어로 여러 프로세스를 백그라운드에서 실행하면 의도치 않게 nohup.out 파일을 덮어쓸 수 있습니다. 이를 방지하려면 각 프로세스마다 출력 파일 경로를 별도로 지정하세요. 이렇게 하면 각 프로세스가 고유한 출력 파일을 갖게 되어 기본 경로가 덮어쓰이지 않습니다.

nohup의 일반적인 오류와 해결 방법을 이해하면 문제없이 nohup 명령어를 활용할 수 있습니다.

결론

nohup 명령어는 백그라운드에서 프로세스를 실행해야 하는 Linux 사용자에게 유용한 도구입니다. 로그아웃 후에도 프로세스가 계속 실행되도록 보장하기 때문입니다. 이 가이드에서는 기본 문법을 설명하고, 다양한 옵션을 살펴보았으며, 자주 발생하는 오류와 문제 해결 방법도 다뤘습니다. nohup 명령어를 잘 활용하면 장시간 실행되는 작업을 효율적으로 관리할 수 있어 생산성과 시스템 관리 능력을 높일 수 있습니다.

Linux 개발자로서 Linux 환경을 최대한 활용하고 싶다면, 신뢰할 수 있는 Linux VPS으로 업그레이드하는 것을 고려해 보세요. 당사의 클라우드 기반 VPS 서비스는 24/7 지원과 99.95%의 가동 시간을 보장하므로, 애플리케이션이 항상 안정적으로 실행되고 언제든지 도움을 받을 수 있습니다. 안정적인 인프라와 신뢰할 수 있는 리소스를 갖춘 당사의 VPS는 Linux 개발자의 요구를 충족하도록 설계되었습니다. 원하는 Linux 배포판을 사전 설치할 수 있어 설정도 빠르고 간편합니다. 필요한 성능과 유연성을 제공하는 VPS로 Linux 프로젝트를 한 단계 발전시키세요.

자주 묻는 질문

의 차이점은 무엇인가요? nohup&?

nohup 은 사용자가 로그아웃할 때 프로세스가 종료되는 것을 방지하고, & 는 프로세스를 백그라운드에서 실행합니다. nohup 을 사용하면 로그아웃 후에도 프로세스가 계속 실행되며, 이를 & 와 함께 사용하면 백그라운드에서 실행할 수 있습니다.

nohup은 왜 사용하나요?

nohup 은 사용자가 로그아웃하거나 터미널이 닫혀도 명령어나 스크립트가 계속 실행되도록 합니다. 사용자 개입 없이 계속 실행되어야 하는 장시간 프로세스에 필수적입니다.

nohup out 파일이란 무엇인가요?

nohup.out 파일은 nohup이 명령어의 표준 출력과 표준 오류를 저장하는 기본 출력 파일입니다. 별도의 출력 파일을 지정하지 않으면 명령어의 출력이 nohup.out 현재 디렉토리에 저장됩니다.

공유

블로그 더 보기

계속 읽기.

Cosmos Cloud로 실행할 수 있는 최고의 셀프 호스팅 앱 - Cosmos 대시보드와 앱 패널 커버 이미지.
서버 및 OS

Cosmos Cloud로 실행할 수 있는 셀프 호스팅 앱 모음: 파일, 미디어, 비밀번호, 자동화 등!

Maybe Cosmos Cloud를 이미 설정했고 어떤 앱이 잘 맞는지 알고 싶거나, 아직 Cosmos를 도입할지 결정하지 못해 실제 워크플로에 얼마나 잘 맞는지 확인하고 싶다면

닉 실버닉 실버 16분 분량
Portainer vs Cosmos Cloud로 Docker 앱 관리하기 — 하이브리드 설정 다이어그램과 운영/접근 블록이 담긴 커버 이미지.
서버 및 OS

Portainer vs Cosmos Cloud: Docker 앱 관리에 적합한 선택은?

Docker를 이미 알고 있고 늘어나는 앱 스택을 더 깔끔하게 운영할 방법을 찾고 있다면, 답은 간단합니다. Portainer vs Cosmos Cloud 중 직접적인 제어 측면에서는 Portainer가 더 나은 선택입니다.

닉 실버닉 실버 14분 분량
Cosmos Cloud vs CasaOS vs Umbrel — 셀프 호스팅의 세 가지 경로를 추상적인 클라우드 네트워크 배경으로 표현한 피처 이미지.
서버 및 OS

Cosmos Cloud vs CasaOS vs Umbrel: 내 환경에 맞는 셀프 호스팅 플랫폼은?

간단히 말하면, CasaOS는 여전히 시작하기 가장 쉬운 선택이고, Umbrel은 큐레이션된 경험이 가장 깔끔하며, 도메인과 설정을 더 세밀하게 제어하고 싶을 때는 Cosmos Cloud가 더 적합합니다.

닉 실버닉 실버 11분 분량

배포할 준비가 됐나요? 월 $2.48부터.

2008년부터 운영해온 독립 클라우드. AMD EPYC, NVMe, 40 Gbps. 14일 환불 보장.