[linux] nohup 명령어 + 사용법
📌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