Shell脚本监控Linux某个后台进程,当进程死掉后重新启动服务,以httpd为例
2024-08-25 00:37:01
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天
最新文章
- python 3.5: TypeError: a bytes-like object is required, not 'str'
- 解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法
- 回调函数中使用MFC类的成员或对话框控件的简单方法
- 使用C#对SQLLite进行操作
- Oracle中decode方法的作用
- 协同滤波 Collaborative filtering 《推荐系统实践》 第二章
- ios fixed属性bug解决方法
- Graphql graffiti
- 关于jQuery中toggle()函数的使用
- mongoDB文档操作
- C语言memset学习
- 关于 Node.js 的认证方面的教程(很可能)是有误的
- 团队作业8——第二次项目冲刺(Beta阶段)
- iOS设置圆角的方法及指定圆角的位置
- Keras官方中文文档:keras后端Backend
- linux下使用命令模式去编译Qt程序
- Linux查看版本
- 【转】Intellij IDEA调试功能
- MySQL主从介绍 准备工作 配置主 配置从 测试主从同步
- Component 父子组件关系