Linux

'nohup' 명령어와 '&' 명령어

moxie2ks 2025. 2. 25. 18:01
728x90
반응형

개요

nohup은 사용자가 로그아웃하더라도 프로세스가 계속 실행되도록 하는 기능을 제공하며, &는 프로그램을 백그라운드에서 실행하여 사용자 인터페이스를 차지하지 않도록 한다. 이 두 명령어는 프로세스를 중단 없이 실행하고, 로그 기록 및 오류 처리와 관련된 다양한 활용법이 있다. 본 글에서는 각 명령어의 사용법, 특징, 그리고 로그 기록을 다루고, 프로세스 종료 방법에 대해서도 설명하고자 한다.

1. nohup 명령어

로그아웃으로 세션과의 연결이 종료되더라도 nohup으로 돌린 프로세스는 데몬 형태로 실행되게 되어 종료되지 않고 계속 실행된다.

nohup 사용법

중단 없이 실행하고자 하는 프로그램 명령어 앞에 "nohup" 을 붙인다.

$ nohup ./my_shellscript.sh

이렇게 실행시키면 nohup: appending output to nohup.out`` 메시지와 함께 해당 프로그램의 표준출력이, nohup을 실행시킨 경로에 nohup.out으로 출력된다.

[주의💡] nohup으로 실행시킬 파일은 반드시 755 퍼미션을 가지고 있어야 한다.

nohup의 표준출력을 다른파일에 쓰기

$ nohup ./my_shellscript.sh > nohup_script.out

' > ' 또는 ' >> ' 와 같은 리다이렉션을 이용해서 다른 파일에 출력할 수 있다.

만약 어디에도 표준출력을 기록하고 싶지 않다면, 다음과 같이 실행하면 된다.

$ nohup ./my_shellscript.sh > /dev/null

2. &(백그라운드) 명령어

&(백그라운드) 실행은 단지 프로그램을 사용자 눈에 보이지 않는 백그라운드 형태로 돌리고 있는 것이기 때문에 로그아웃으로 세션과 연결이 끊어지면 실행되고 있던 프로그램도 함께 종료된다.

그런데 언젠가부터 &(백그라운드)로 돌리더라도 nohup과 동일하게 세션이 끊어져도 프로그램이 종료되지 않는 옵션이 디폴트로 적용되었기 때문에, 두 명령어의 동작이 유사하게 보이게 되었다.

& 를 프로그램 실행시에 명령어 맨 끝에 붙여주면 해당 프로그램이 백그라운드로 실행된다.

$ ./my_shellscript.sh &

아래 명령어를 통해서 백그라운드로 돌고 있는 것을 확인할 수 있다.

$ ps -ef | grep my_shellscript.sh

3. nohup과 &(백그라운드)의 활용법

어떤 프로그램을 종료 없이 백그라운드에서 실행시키고 싶다면 아래와 같은 조합을 사용해 좀 더 확실하고 안전하게 사용할 수 있다.

$ nohup ./my_shellscript.sh &

4. Log를 내가 원하는 곳에 기록

nohup을 사용하면 기본적으로 nohup.out에 표준출력이 쌓이지만, 때때로 표준출력과 표준에러를 각각 다른 파일에 쓰고 싶을 때도 있고, 한 파일에 표준출력과 표준에러를 같이 쌓고 싶은 경우도 있을 것이다.

표준출력과 표준에러를 다른 파일에 쓰기

$ nohup ./my_shellscript.sh 1 > my_shellscript.out 2 > my_shellscript.err &

표준출력과 표준에러를 같은 파일에 쓰기

$ nohup ./my_shellscript.sh > my_shellscript.log 2>&1 &

5. 프로세스 종료

  1. ps 명령어를 통해서 프로세스 아이디 ,찾기
  2. kill 명령어로 프로세스를 종료
### 프로세스 아이디 찾기
$ ps -ef | grep my_shellscript.sh
### 프로세스 종료
$ kill -9 <프로세스 아이디>

결론

nohup과 & 명령어는 Linux 환경에서 프로세스를 효율적으로 관리하는 데 필수적인 도구다. nohup을 사용하면 세션 종료와 관계없이 프로세스가 계속 실행될 수 있으며, &를 사용하면 백그라운드에서 프로그램을 실행하여 사용자 환경을 방해하지 않는다. 이 두 기능을 적절히 조합하여 사용할 경우, 장기 실행 작업이나 서버 유지 관리 작업을 보다 안정적으로 수행할 수 있다. 또한, 로그 파일을 관리하는 다양한 방법을 통해 출력 및 오류를 효과적으로 기록할 수도 있다. 이러한 기법들을 통해 사용자들은 시스템 자원을 보다 효율적으로 활용하고, 작업의 지속성을 보장할 수 있다.

참고문헌

쉽게 설명한 nohup과 &(백그라운드) 명령어 사용법

728x90
반응형