[ React ] nohup으로 백그라운드에서 프로세스 유지하기

da__hey·2021년 6월 24일
0
post-thumbnail

원격으로 설정된 리눅스 서버로 접근했을 때, 로컬의 세션이 종료될때마다 프로세스도 함께 죽는 현상이 발생한다. 리눅스에서 제공하는 명령어인 nohup을 이용하면 터미널의 세션 연결이 끊어지더라도 지속적으로 프로세스를 동작할 수 있게 해준다.


nohup

터미널 종료 후 프로세스 작업을 유지해주는 리눅스 명령어

nohup [커맨드 명령어] & 를 이용하여 백그라운드 프로세스를 유지시키려고 했다. 커맨드 명령어에는 자신의 프로젝트를 실행시키는 명령어를 적어주면 된다.

nohup yarn start &
하지만 또다시 세션종료와 동시에 프로세스도 죽는 문제가 발생했다😥
이 문제는 아래 disown 옵션을 추가해서 해결할 수 있었다!

disown

터미널 종료 시 프로세스 종료 방지

disown은 프로세스 작업의 소유권을 shell session에서 해제시키는 옵션이다. 옵션으로 추가해주면 현재 session job list에서 job 들이 빠져나가게 된다.
(이는 jobs 커맨드로 확인 가능, 프로세스 전체 보기로 보면 프로세스는 남아있는 것을 볼 수 있다.)

따라서 터미널이 종료되어도 SIGHUP이 전달되지 않아서 계속 돌아가게 된다.

nohup을 실행하고 나면 프로젝트 내부에 nohup.out의 이름을 가진 파일이 생성된다. 세션이 종료되어도 프로세스의 출력값을 저장하는 파일로, 언제든지 이 파일을 통해 프로세스의 상태를 확인할 수 있다.

nohup 으로 실행중에 nohup.out 을 비우고 싶다면, 아래 명령어를 사용하면 된다.
cat /dev/null > nohup.out

참고 블로그 🔍

https://crazyj.tistory.com/242

profile
🌱 차근차근, 오래 즐겁게!

0개의 댓글