在shell中,判断一个进程是否存在,是判断进程数量1:进程判断 没有运行进程时,如下显示,只有一条,这条就是这条命令的进程。ubuntuk8snode1:psefgrepnginxubuntu79224021309:05pts000:00:00grepcolorautonginx 如果进程存在就会显示多条进程信息,其中一条包括命令这条。ubuntuk8snode1:psefgrepnginx199729541983008:59?00:00:00nginx:cetcnginxnginx。conf199729562954008:59?00:00:00nginx:workerprocess199729572954008:59?00:00:00nginx:workerprocess199729582954008:59?00:00:00nginx:workerprocess199729592954008:59?00:00:00nginx:workerprocess199729602954008:59?00:00:00nginx:workerprocessubuntu51754021009:03pts000:00:00grepcolorautonginx 所以判断是否存在,只要判断数量即可,命令为psefgrepnginxwcl 进程大于1,则进程存在正常,显示如下:ubuntuk8snode1:psefgrepnginxwcl72:脚本内容 以下是最简单的判断内容,判断进程数量小于等于1,则进程不存在,然后重启即可。!binbashsetx调试脚本可去掉注释ProcNumber(psefgrepwnginxwcl)if〔{ProcNumber}le1〕;thensystemctlrestartnginx进程不存在,重启服务fi shell判断相关参数:eq:等于ne:不等于le:小于等于ge:大于等于lt:小于gt:大于 需注意的坑: grep需要加上参数w,意为精确匹配。如果不加上w,判断进程数量会不准确。 例:判断一个名为info。py的脚本内容:psefgrepinfo。py 不加w,会把包括info。py都显示出来,如infopy,info之类的。所以显示数量远大于实际进程数量。 所以写脚本时必须加上w参数,显示只有info。py的内容。 grep其他参数参考:e:使用正则搜索常用查找当前目录下所有文件中包含字符串,如nginx的文件,会将含有nginx字符串的所有文件匹配出来i:不区分大小写v:查找不包含指定内容的行常用,反向查询,取反。w:按单词搜索c:统计匹配到的次数n:显示行号常与rn搭配使用r:逐层遍历目录查找常用,将当前文件夹及子文件夹中查找,常与rn搭配使用查找某字段在文件中的哪一行。A:显示匹配行及前面多少行,如:A3,则表示显示匹配行及前3行B:显示匹配行及后面多少行,如:B3,则表示显示匹配行及后3行C:显示匹配行前后多少行,如:C3,则表示显示批量行前后3行color:匹配到的内容高亮显示include:指定匹配的文件类型exclude:过滤不需要匹配的文件类型3:定时任务 脚本完成后,需添加系统定时任务。crontabe添加脚本位置,每分钟执行一次1binbashscriptchecknginx。sh