Shell 批量进程判断是否存在
程序员文章站
2022-02-26 20:05:17
通过ps -ef | grep tomcat判断进程是否存在1. 把需要点检的tomcat路径放到一个txt中,一行写一个tomcat,名字为demo.txt/home/app/tomcat_8555...
通过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 批量进程判断内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!