千家信息网

如何使用shell脚本监控进程是否存在若不存在则启动

发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,小编给大家分享一下如何使用shell脚本监控进程是否存在若不存在则启动,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货
千家信息网最后更新 2025年02月04日如何使用shell脚本监控进程是否存在若不存在则启动

小编给大家分享一下如何使用shell脚本监控进程是否存在若不存在则启动,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货:

#!/bin/shps -fe|grep processString |grep -v grepif [ $? -ne 0 ]thenecho "start process....."elseecho "runing....."fi

#####
processString 表示进程特征字符串,能够查询到唯一进程的特征字符串
0表示存在的
$? -ne 0 不存在,$? -eq 0 存在

定时执行:

crontab -e
0 04,12,21 * * * /bin/bash /home/mysh/monitorprocess.sh
每天晚上4点,中午12点,晚上21点检测
0 4,12 * * *
分 时 日 月 周
* 04,12 * * * 这个是指4点和12点中每分钟执行一次
0 4,12 * * * 4点12点 第0分钟执行一次

扩展相关知识:

shell的if else 语法以及大于,小于等逻辑表达式:

if ....; then

  ....

elif ....; then

  ....

else

  ....

fi

大多数情况下,可以使用测试命令来对条件进行测试。比如可以比较字符串、判断文件是否存在及是否可读等等…   通常用" [ ] "来表示条件测试。注意这里的空格很重要。要确保方括号的空格。
[ -f "somefile" ] :判断是否是一个文件
[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
[ -n "$var" ] :判断$var变量是否有值
[ "$a" = "$b" ] :判断$a和$b是否相等 -r file     用户可读为真
  -w file     用户可写为真
  -x file     用户可执行为真
  -f file     文件为正规文件为真
  -d file     文件为目录为真
  -c file     文件为字符特殊文件为真
  -b file     文件为块特殊文件为真
  -s file     文件大小非0时为真
  -t file     当文件描述符(默认为1)指定的设备为终端时为真
######################################################### 含条件选择的shell脚本
对于不含变量的任务简单shell脚本一般能胜任。但在执行一些决策任务时,就需要包含if/then的条件判断了。shell脚本编程支持此类运算,包括比较运算、判断文件是否存在等。基本的if条件命令选项有: - eq -比较两个参数是否相等(例如,if [ 2 -eq 5 ])
-ne -比较两个参数是否不相等
-lt -参数1是否小于参数2
-le -参数1是否小于等于参数2
-gt -参数1是否大于参数2
-ge -参数1是否大于等于参数2
-f - 检查某文件是否存在(例如,if [ -f "filename" ])
-d - 检查目录是否存在
几乎所有的判断都可以用这些比较运算符实现。脚本中常用-f命令选项在执行某一文件之前检查它是否存在。

判断文件是否存在

#!/bin/shtoday=`date -d yesterday +%y%m%d`file="apache_$today.tar.gz"cd /home/chenshuo/shellif [ -f "$file" ];thenecho "OK"elseecho "error $file" >error.logmail -s "fail backup from test" chenshuo@soufun.com 

shell基本命令
(1)ps aux 显示系统全部进程,一行一个
(2)grep "abc" 从标准输入读取字符流,输出包含字符串"abc"的行
(3)grep -v "acb" 从标准输入读取字符流,输出不包含字符串"abc"的行
(4)wc -l 从标准输入读取字符流,输出行数

例如需要检测进程httpd是否存在,操作流程如下:
(1)读取系统所有进程
(2)判断包含指定进程名字的信息是否存在
通过管道连接,命令如下:

ps axu | grep "httpd" | grep -v "grep" | wc -l
所有进程-->获取包含"httpd"的行-->删除grep进程信息-->输出最后的行数

通过判断命令的执行结果是否为 0 ,可以知道进程是否存在。

脚本如下:

#!/bin/shwhile true;do    count=`ps -ef|grep http|grep -v grep`    if [ "$?" != "0" ];thenecho  ">>>>no httpd,run it"service httpd startelseecho ">>>>httpd is runing..."fisleep 5done

看完了这篇文章,相信你对"如何使用shell脚本监控进程是否存在若不存在则启动"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

文件 进程 参数 字符 脚本 命令 字符串 条件 输出 监控 标准 用户 测试 输入 运算 特殊 两个 任务 信息 变量 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 武汉汉达升网络技术有限公司 御龙在天服务器维护中启动失败 邻达网络技术有限公司 游戏服务器管理在哪里 互联网科技有限公司是干什么的 江西智能化软件开发价格大全 嵌入式软件开发五个步骤 java读文件批量插入数据库 csgo社区服务器进入指令 数据库运用技术 短信网络安全机关 手机能够登录云服务器吗 服务器未响应无法上网 网络安全进校园的活动总结 db2数据库的时间怎么修改 总体国家安全观网络安全表述 国内网络安全上市公司 幼儿园网络安全制度和规定 东莞pc软件开发报价 定点医疗机构网络安全自查总结 西华县西华营服务器 山东鑫发源软件开发有限公司 大众导航数据库在哪里 贪吃蛇如何升级服务器 2022年国家网络安全总体形势 重庆软件开发机构排名 浪潮服务器支持m2启动吗 如何大学生网络安全意识 嵌入式软件开发加班那 闵行区自动化软件开发口碑推荐
0