백그라운드 작업이 필요할 경우가 있을 수 있다.
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을 실행한 위치에 자동으로 생성된다.
댓글
댓글 쓰기