Linux 서버 내에서 tomcat이 아닌 Java Application으로 만들어 Socket프로그램을 계속 돌릴 수 있게 하기 위해
Java Class 세개와 시작과 중지를 담당하는 두 개의 shell script를 만들게 되었습니다.

작업을 진행하면서 사용하게 된 Linux PID 얻기 관련 명령어를 정리해보겠습니다.

 


1. 프로세스 PID 확인하기

 ps -ef | grep com.socket.server.Server

현재 패키지(com.socket.server)에 클래스(Server)가 프로세스로 실행이 되고 있는지 확인하는 명령어이다.


cmd Result

[root@dev test]# ps -ef | grep com.socket.server.Server
root     32298     1  0 09:46 pts/1    00:00:02 /usr/local/java/bin/java -server -mx128M -ms64M -cp :./lib/TomcatActionSocket.jar:./lib/log4j-1.2.17.jar -DServerHome=. -Dpid=32297 com.socket.server.ServerSocketConnect
root     32545 32059  0 11:05 pts/2    00:00:00 grep com.socket.server.Server

 

 

2. 프로세스 PID만 얻어오기

 ps -ef | grep com.socket.server.Server | awk '{print $2}'

위 1번 cmd를 실하면 result와 같이 process정보를 각 열로 정리해서 보여준다
우리가 원하는 PID 정보는 2열에 존재하며 awk '{print $2}'를 붙이면 원하는 결과를 가져올 수 있다.

print 숫자에 따른 값 정보

$1 (권한)

$2 (Process ID)

$3 (부모 Process ID)

 $4~~ (etc)

 root

33298

 1

 ....(이 외 정보들)

참고로 awk '{print $2}'에 숫자는
awk '{print $1, $2}', awk '{print $1 $2}' 등 원하는 정보값을 열에 맞게 설정해서 가져올 수 있다.


cmd Result

[root@dev test]# ps -ef | grep com.socket.server.Server | awk '{print $2}'
32298
32583
[root@dev test]# ps -ef | grep com.socket.server.Server | awk '{print $1,$2}'
root 32298
root 32586

 

 

3. 얻어 온 PID정보를 파일로 저장하기

 ps -ef | grep com.socket.server.Server | awk '{print $2}' > pid

검색한 정보를 현재 디렉토리에 pid라는 이름으로 저장하는 명령이다.
이번 프로젝트를 하면서 개인적으로
PID값을 저장해서 shell Script에서 for문을 사용할 때 pid라는 파일을 불러와 사용하고 있다.


cmd Result

[root@dev test]# ps -ef | grep com.socket.server.Server | awk '{print $2}' > pid
[root@dev test]# vim pid
32005
32293

 

'OS > Linux' 카테고리의 다른 글

[ShellScript] Host IP/Name 불러오기, 변수선언  (0) 2021.01.19
Linux에서 Java class 실행시키기  (0) 2018.05.11

+ Recent posts