文章目录
- 前言
- 一、使用 bash 脚本编写监控程序
- 二、使用 systemd
- 总结
前言
在 Linux 下监听某个进程,当进程异常退出后自动重启,可以使用bash脚本编写监控程序,也可以使用系统工具如 systemd 或 supervisor。
一、使用 bash 脚本编写监控程序
- 使用 bash 脚本编写监控程序创建一个 check_process.sh 文件,内容如下:
#!/bin/bash
while true
do#尝试获取进程的 PID,这里通过进程的名字来获取,如 nginxPID=`ps -ef |grep -v grep | grep nginx |awk '{print $2}'`#判断进程的 PID 是否为空,为空则未找到此进程,需要启动if [ ! "$PID" ]; thenecho "进程不存在,正在启动..."#这里可以可以修改成你的启动应用命令/usr/sbin/nginxecho "进程启动成功!"fi#每隔一分钟检测一次进程是否存在sleep 60
done
授权文件可执行:
chmod 777 check_process.sh
运行此 check_process.sh 脚本,并将其设置为后台运行:
nohup check_process.sh &
二、使用 systemd
2.在 /lib/systemd/system/ 下创建名为 myprocess.service 的文件。更改以下示例,根据您的需求进行调整:
[Unit]
Description=My Custom Service
After=network.target[Service]
ExecStart=/usr/bin/myprocess
Restart=always
User=root
Group=root
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
WorkingDirectory=/home/myuser[Install]
WantedBy=multi-user.target
使用以下命令启用并启动服务:
sudo systemctl enable myprocess.service
sudo systemctl start myprocess.service
总结
注意: 以上两种方式都需要根据你的环境进行适当调整,比如进程名、启动命令位置等。