웹 개발/linux

[linux] nohup 명령어 + 사용법

dani0312 2024. 3. 15. 23:56

📌Nohup 명령어 알아보기

◾Nohup 명령어란

리눅스에서 자주 사용하는 Nohup명령어는 no hanp up의 약자이다. 즉 '끊지마'이다. 전화할 때 끊지마 'Don't hang up'이라고 하듯이 같은 의미이다. 

 

프로세스가 중단되지 않고 백그라운드로 작업을 수행할 수 있게 하는 것이다. 사용자가 로그아웃하거나 작업 중인 터미널 창을 닫아도(터미널의 세션 연결이 끊어지더라도) 실행 중인 프로세스를 백그라운드 프로세스로 계속 작업할 수 있도록 하는 것이다.

 

용량이 큰 데이터 압축 해제와 같은 실행 시간이 오래 걸리는 프로세스들에 대해 nohup으로 처리하여 작업하면 작업 중단 없이 해당 업무를 완료할 수 있다. 

 

◾Nohup.out 파일

`nohup.out`은 nohup으로 실행된 프로세스의 표준 출력과 표준 에러를 저자앟는 파일이다.  터미널이 종료되어도 표준 출력은 nohup.out 파일에 계속해서 기록하기 때문에 프로세스의 상태를 확인하는데 유용할 수 있다. 

 

그러나 필요 이상의 로그를 화면에 계속해서 출력하게 되면 nohup.out파일의 용량이 매우 커지니 꼭 필요한 로그만 출력하거나 로그를 남기는 것이 불필요한 경우 재지향을 통해 nohup.out 파일을 생성하지 않도록 하는 것이 좋다고 한다.

 

 

◾Nohup명령어 사용하기

1. nohup 명령어 사용하기

nohup 명령어 [옵션] &

 

명령어 : 실행할 명령어나 스크립트를 지정한다. 

옵션 : 명령어나 스크립트에 대한 옵션을 지정한다. 

& : 명령어를 백그라운드에서 실행하도록 한다. 기본적으로 어떤 프로그램을 종료없이 백그라운드에서 실행하기 위해 사용하기 때문에 nohup + & 조합으로 많이 사용된다. 

 

 

2. nohup 명령어 사용 예

nohup sleep 10 &

 

위와 같이 입력하면 sleep 10 명령이 백그라운드에서 실행되고, 해당 프로세스의 출력은 nohup.out파일에 저장된다. 

 

 

2. 파일 출력없이 nohup 실행하기

파일 출력을 피하려면 표준 출력과 표준 에러를 `/dev/null`로 리디렉션하면 된다. 이 경로는 표준 출력을 버리는 장치로서, 출력된 내용이 저장되지 않는다.

nohup 명령어 [옵션] >/dev/null 2>&1 &

 

>/dev/null : 표준 출력을 '/dev/null'로 리디렉션하여 출력을 버린다.

2>&1 : 표준 에러를 표준출력으로 리디렉션하여 표준 출력과 동일하게 처리한다. (표준 에러를 표준 출력과 같게 만드는 명령어이다.)

 

 

 


Reference

https://gracefulprograming.tistory.com/128

https://blog.naver.com/hj_kim97/222928754029