python process 를 백그라운드로 동작 시키기 위해서는 nohup이나 뒤에 '&'를 붙여 주면 되는데...
종료하기 위해서는 해당 PID를 kill 명령을 내려야 한다.
예전에는 kill -9 만 썼는데...
이게 그렇게 나이스 한 방법은 아니라는게 문제다...
그래서 kill 명령 관련 자료를 찾아 보았다.
kill 명령은 프로세스를 무조건 죽이는 명령이 아니라
해당 프로세스와 커뮤니케이션을 한다고 보면 된다.
'난 정말 아무것도 모르고 사용 한 것이었다..ㅡㅡ'
'kill -l'
명령을 보면 kill 명령 옵션이라고 해야 하나 그런 것들이 다양하게 나온다.
음.. 도대체 뭐야...
SIGHUP(HUP) : 연결 끊기. 프로세스의 설정파일을 다시 읽는데 사용된다.
SIGINT(INT) : 인터럽트
SIGQUIOT(QUIT) : 종료
SIGILL(ILL) : 잘못된 명령
SIGTRAP(TRAP) : 트렙 추적
SIGIOT(IOT) : IOT 명령
SIGBUS(BUS) : 버스 에러
SIGFPE(FPE) : 고정 소수점 예외
SIGKILL(KILL) : 죽이기. 이 시그널은 잡히지 않는다.
SIGUSR1(USR1) : 사용자 정의 시그널 1
SIGSEGV(SEGV) : 세그멘테이션 위반
SIGUSR2(USR2) : 사용자 정의 시그널 2
SIGPIPE(PIPE) : 읽을 것이 없는 파이프에 대한 시그널
SIGALRM(ALRM) : 경고 클럭
SIGTERM(TERM) : 소프트웨어 종료 시그널, 일반적으로 kill 시그널이 전송되기 전에 전송된다. 잡히는 시그널이기 때문에 종료되는 것을 트랙할 수 있다.
SIGKFLT : 코프로세서 스택 실패
SIGCHLD(CHLD) : 자식 프로세스의 상태변화
SIGCONT(CONT) : STOP 시그널 이후 계속 진행할 때 사용
SIGSTOP(STOP) : 정지. 이 시그널 역시 잡을 수 없다.
SIGTSTP(TSTP) : 키보드에 의해 발생하는 시그널로 Ctrl+Z로 생성된다.
뭐가 많다..
하지만 프로세스를 종료 하는데 쓰이는 것은 -9 보다는 -15를 추천한다.
-9 는 강제 종료 개념이고
-15는 진행중인 작업과 clean up 작업을 완료 하고 종료 하는 것이라고 보면 된다.
간단히
백그라운드에서 돌고 있는 프로세스를 종료하는 스크립트를 예로 들면
if [ -f $PID_FILE ]; then
kill -15 `cat $PID_FILE`
while kill -0 `cat $PID_FILE` >/dev/null 2>&1
do
echo Exiting...
sleep 1
done
echo STOPPED
rm $PID_FILE
else
echo "It seems that the process isn't running."
fi
이정도로 하면 되겠다.
'프로그래밍 > linux' 카테고리의 다른 글
Bash Shell euc-kr => utf-8 변환 (0) | 2018.02.13 |
---|---|
alternative 를 이용한 기본 java version 변경 (0) | 2018.02.13 |
서버에 열려 있는 PORT 확인 (0) | 2017.12.20 |
SSH SESSION 관리 (0) | 2017.12.20 |
ulimit 설정 관련 (0) | 2016.05.13 |