유닉스나 리눅스에서 서버를 돌릴 경우, 백그라운드로 실행을 하는 경우가 많은데요, 이때는 명령의 끝에 & 를 붙이면 된다는 것을 잘 아실겁니다.
[shinnara ~/java/ResourceServer/ver1.0]$ java -cp bin/ ResourceServer &
[1] 80460
[shinnara ~/java/ResourceServer/ver1.0]$ Server Started... [7779]
[shinnara ~/java/ResourceServer/ver1.0]$
[1] 80460
[shinnara ~/java/ResourceServer/ver1.0]$ Server Started... [7779]
[shinnara ~/java/ResourceServer/ver1.0]$
보시는 바와 같이 ResourceServer 가 7779번 포트로 부터 시작되었음을 알려주는 메시지가 정상적으로 표시되는데, 명령의 끝에 &를 붙였기 때문에 [1]80460 이라는 메시지가 추가적으로 생기게 됩니다. 이 번호가 프로세스 번호를 의미합니다.
[shinnara ~/java/ResourceServer/ver1.0]$ kill 80460
[shinnara ~/java/ResourceServer/ver1.0]$ ps
PID TT STAT TIME COMMAND
80328 p0 S 0:00.15 -bash (bash)
80487 p0 R+ 0:00.00 ps
80303 p1 I+ 0:00.04 -bash (bash)
[1]+ Exit 143 java -cp bin/ ResourceServer
[shinnara ~/java/ResourceServer/ver1.0]$
[shinnara ~/java/ResourceServer/ver1.0]$ ps
PID TT STAT TIME COMMAND
80328 p0 S 0:00.15 -bash (bash)
80487 p0 R+ 0:00.00 ps
80303 p1 I+ 0:00.04 -bash (bash)
[1]+ Exit 143 java -cp bin/ ResourceServer
[shinnara ~/java/ResourceServer/ver1.0]$
실행시킬때 알게된 80460 이라는 PID를 이용해서 kill을 시켰더니 해당 프로세스가 종료되었음을 알려줍니다.
만약 서버를 실행시킨지 오래되어서 PID 를 모른다면 ps 를 이용해서 PID 를 알아 낼수 있습니다.
저의 경우는 다음과 같은 명령을 사용하기도 합니다.
[shinnara ~/java/ResourceServer/ver1.0]$ kill -9 `ps -ef | grep "java" | grep -v grep | grep "Resource" | awk '{print $1}'`
간혹 시스템에 따라서는 awk '{print $2}' 라고 적어야 하는 경우도 있나봅니다. 제가 참고해본 자료들이 대부분이 $2 를 사용하더군요. 제 시스템에서는 첫번째가 PID 로 나오기때문에 $1 를 사용했습니다.
위의 내용을 잘 활용하면 서버의 실행과 중지를 편리하게는 스크립트도 작성할 수 있을 것입니다. ^^
댓글을 달아 주세요