Shell 批量进程判断是否存在

通过ps -ef | grep tomcat判断进程是否存在

1. 把需要点检的tomcat路径放到一个txt中,一行写一个tomcat,名字为demo.txt

/home/app/tomcat_8555_pis

/home/app/tomcat_test8556

/home/app/tomcat_test8557

/home/app/tomcat_test8558

/home/app/tomcat_test8559

/home/app/tomcat_test8560

test_not_found

test_not_found

2. 撰写脚本 demo.sh

#!/bin/bash -v

# 获取默认的参数值

echo '输入的文件参数为:' $1

file_name="$1"

if [ -z "${file_name}" ];then

file_name="$0"

file_name="${file_name%*.sh}.txt"

fi

echo "实际的文件参数为:${file_name}"

# 检测进程是否存在

# 如果有存在就显示OK, 不存在就显示NG

function check_info(){

processString="$1"

echo "$(date '+%Y-%m-%d %H:%M:%S') 检测的字符串:$processString 开始 ------------------------------------------------------------------ "

ps -fe | grep "$processString" | grep -v grep

if [ $? -eq 0 ]; then

echo -e "$(date '+%Y-%m-%d %H:%M:%S') 检测的字符串:${processString} \033[42;34m 结果:OK \033[0m"

else

echo -e "$(date '+%Y-%m-%d %H:%M:%S') 检测的字符串:${processString} \033[41;30m 结果:NG \033[0m"

echo $processString >> "${file_name}.error.log"

fi

# 打印明细

echo "$(date '+%Y-%m-%d %H:%M:%S') 进程明细如下:----------------"

ps -fe | grep "$processString"

ps -fe | grep "$processString" > "${file_name%.sh}.error.log"

echo "$(date '+%Y-%m-%d %H:%M:%S') 进程明细结束:----------------"

echo "$(date '+%Y-%m-%d %H:%M:%S') 检测的字符串:$processString 结束 ------------------------------------------------------------------ "

echo ''

echo ''

}

# exit

echo '开始执行' > "${file_name}.error.log"

cat "${file_name}" | while read line

do

if [ -n "$line" ];then

echo $line

check_info $line

fi

done

3. 启动

sh -v ./demo.sh demo.txt

sh -v ./demo.sh 2>&1 | tee demo.log

tee命令

tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。

到此这篇关于Shell 批量进程判断是否存在的文章就介绍到这了,更多相关Shell 批量进程判断内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

以上是 Shell 批量进程判断是否存在 的全部内容, 来源链接: utcz.com/p/256702.html

回到顶部