shell 에서 prop 파일을 읽어서 awk 스크립트를 이용해서 처리하는 구조 입니다.
총 3개의 파일로 구성되어 있고 추가적인 기능이 필요 한경우 awk 스크립트에 구현을 하면 됩니다 .
1. shell 파일 (disp.sh)
#!/bin/bash set SCRIPT_PATH = '/home/user/util/' awk -f ${SCRIPT_PATH}disp.awk ${SCRIPT_PATH}proc.prop
* script_path : 스크립트 패스가 있는 폴더를 설정하면 됩니다.
2. prop 파일(proc.prop)
# Title processKey
tomcat tomcat
apache httpd
* 첫번째 필드는 표시될 이름 입니다.
* 두번째 필드는 ps -ef 명령 실행시 찾을 문구 입니다.
3. awk 파일 ( disp.awk)
#!/bin/awk
#
# This Program is display WEB status
BEGIN {
# width 66
pFormat = "%12s|%12s|%14s|%10s|%12s|\n";
pStar = "*****************************************************************"
pBar = "-----------------------------------------------------------------";
print "";
print pStar;
print "* Display WEB Applicatin Status *";
print pStar;
printf(pFormat ,"PROCESS", "PID", "START TIME", "COUNT", "STATUS");
print pBar;
}
# ROUTINE
{
#if ( $1 == "#" ) {
if ( $1 ~ /^#/ || $1 == "") {
# print "Skip....";
} else {
cmd = "ps -e -o pid,start,command |grep " $2 " | grep -v grep" ;
#system(cmd) | getline psResult;
count = 0;
while (cmd | getline line) {
# print line;
split (line , res, " ");
if (count == 0 ) {
pid = res[1];
sTime = res[2];
}
count++;
}
close(cmd)
status= " \033[1;31mUNKNOWN\033[0m";
if( count > 0 ) {
status = "ALIVE";
}
printf(pFormat , $1, pid, sTime, count, status);
}
}
END {
print pBar;
print pStar;
print "";
}
* 프로세스에서 지정된 키워드를 가진 프로세스의 숫자를 세서 보여 줍니다.
실행을 하면 다음과 같은 결과를 출력하게 됩니다.
************************************************************* * Display WEB Applicatin Status * ************************************************************* PROCESS| PID| START TIME| COUNT| STATUS| ------------------------------------------------------------- tomcat| | | 0| UNKNOWN| apache| 37| 5:39PM| 113| ALIVE| ------------------------------------------------------------- *************************************************************
프로세스의 상태와 개수및 시작 시간 그리고 하나도 발견이 안되는 경우 붉은 글씨로 UNKNOWN 으로 표시 하게 됩니다.