Shell脚本如下:

vim monitor.sh

#!/bin/bash

while true   # 无限循环
flag=`ps -aux |grep "httpd" |grep -v "grep" |wc -l`
do
if [[ $flag -eq ]] # 判断进程数如果等于0,则启动httpd
then
`systemctl start httpd` # 启动httpd
echo `date` - "Apache restart" >> running.log # 将重启时间写入自定义的日志文件
else
echo "Apache is running..." >> /dev/null
fi
sleep 3s # 延迟3秒后进入下次循环
done

运行脚本:bash monitor.sh &

命令末尾的 & 号,意思是将这个任务放到后台去执行。

那么如何停止脚本运行呢?

(1)首先查找运行脚本的进程PID号:

ps -aux |grep "bash monitor.sh"

(2)终止脚本进程:

kill -9 进程PID号

对脚本做一些说明:

ps -aux | grep    # 查找进程

参数:-aux 意思是显示所有包含其他使用者的进程。

ps -aux | grep "process_name"

若只执行这条命令,会导致出现一个 grep 进程,也就是说若只用上面的命令,会永远得到至少一个进程(grep进程),所以还需要用下面的命令,排除 grep 本身这个进程:

grep -v "grep"

最后再用 wc -l 命令统计进程数。

if 判断如果获得的进程数等于0,则证明 httpd 服务没有运行,执行启动命令。

sleep命令可以用来将目前动作延迟一段时间

sleep 1      延迟1秒

sleep 1s    延迟1秒

sleep 1m   延迟1分钟

sleep 1h    延迟1小时

sleep 1d    延迟1天

最新文章

  1. python 3.5: TypeError: a bytes-like object is required, not 'str'
  2. 解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法
  3. 回调函数中使用MFC类的成员或对话框控件的简单方法
  4. 使用C#对SQLLite进行操作
  5. Oracle中decode方法的作用
  6. 协同滤波 Collaborative filtering 《推荐系统实践》 第二章
  7. ios fixed属性bug解决方法
  8. Graphql graffiti
  9. 关于jQuery中toggle()函数的使用
  10. mongoDB文档操作
  11. C语言memset学习
  12. 关于 Node.js 的认证方面的教程(很可能)是有误的
  13. 团队作业8——第二次项目冲刺(Beta阶段)
  14. iOS设置圆角的方法及指定圆角的位置
  15. Keras官方中文文档:keras后端Backend
  16. linux下使用命令模式去编译Qt程序
  17. Linux查看版本
  18. 【转】Intellij IDEA调试功能
  19. MySQL主从介绍 准备工作 配置主 配置从 测试主从同步
  20. Component 父子组件关系

热门文章

  1. GTD时间管理
  2. [转帖]B4. Concurrent JVM 锁机制(synchronized)
  3. 钉钉的sonar集成通知
  4. 离线方式快速安装python模块以及相关依赖模块
  5. Go语言入门——hello world
  6. WPF设置全局控件样式
  7. Java的Stream流式操作
  8. python爬虫---CrawlSpider实现的全站数据的爬取,分布式,增量式,所有的反爬机制
  9. Jenkins+Gitee异常解决
  10. element-ui文件上传 做类型大小的限制