[linux] 백그라운드 작업 nohup [xxx.sh] &


백그라운드 작업이 필요할 경우가 있을 수 있다.

1. 데몬형태로 뭐를 띄운다거나,
2. cpu 많이 안잡아먹는데, 실행이 겁나 오래 걸리는. (예를들면, 10g짜리 압축을 푼다거나 뭐 이런거. ㅋ )
보통 명령어 뒤에 & 만 붙여도 백그라운드로 작업을 한다.

test.sh &

그런데 이럴경우 사용자가 터미널 세션이 끊어버리면 백그라운드 중인 작업도 같이 종료되어 문제가 발생할 소지가 있다.
그래서 이럴때 쓰는 명령어

nohup

nohup ./test.sh &
저러면 쉘이 실행 되면서 몇 초 정도 깜박거리거나, 해당 로그가 떨어지다가
곧 프롬프트 상태로 돌아온다.

nohup 확인

그리고 나서
ps -ef 

해주면 test.sh가 떠있는걸 확인할 수 있다.


nohup 종료
종료하는 방법은 따로 없다.
ctrl+c, ctrl+d 백날 눌러봐야 소용없다. ㅋ
ps -ef 로 해당 쉘 pid 확인해서 kill로 종료시키면 된다.

kill [pid of test.sh]

nohup 로그

nohup으로 실행된 쉘 스크립트는 자동으로 nohup.out 이라는 이름으로 nohup을 실행한 위치에 자동으로 생성된다.


댓글

이 블로그의 인기 게시물

[spring] log4j 설정 및 사용법

[spring] 인터셉터 와 필터