Linux监听某个进程,自动重启

文章目录

  • 前言
  • [一、使用 bash 脚本编写监控程序](#一、使用 bash 脚本编写监控程序)
  • [二、使用 systemd](#二、使用 systemd)
  • 总结

前言

在 Linux 下监听某个进程,当进程异常退出后自动重启,可以使用bash脚本编写监控程序,也可以使用系统工具如 systemd 或 supervisor。


一、使用 bash 脚本编写监控程序

  1. 使用 bash 脚本编写监控程序创建一个 check_process.sh 文件,内容如下:
bash 复制代码
#!/bin/bash
while true
do
    #尝试获取进程的 PID,这里通过进程的名字来获取,如 nginx
    PID=`ps -ef |grep -v grep | grep nginx |awk '{print $2}'`
    #判断进程的 PID 是否为空,为空则未找到此进程,需要启动
    if [ ! "$PID" ]; then
        echo "进程不存在,正在启动..."
        #这里可以可以修改成你的启动应用命令
        /usr/sbin/nginx
        echo "进程启动成功!"
    fi
    #每隔一分钟检测一次进程是否存在
    sleep 60
done

授权文件可执行:

bash 复制代码
chmod 777 check_process.sh

运行此 check_process.sh 脚本,并将其设置为后台运行:

bash 复制代码
nohup check_process.sh &

二、使用 systemd

2.在 /lib/systemd/system/ 下创建名为 myprocess.service 的文件。更改以下示例,根据您的需求进行调整:

bash 复制代码
[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

使用以下命令启用并启动服务:

bash 复制代码
sudo systemctl enable myprocess.service
sudo systemctl start myprocess.service

总结

注意: 以上两种方式都需要根据你的环境进行适当调整,比如进程名、启动命令位置等。

相关推荐
rGzywSmDg6 小时前
如何在Dev-C++中选择TDM-GCC编译器
linux·jvm·c++
Irissgwe6 小时前
九、Linux信号机制(二)
linux·进程·可重入函数·volatile·sigchld信号·进程信号
野熊佩骑6 小时前
一文读懂Nginx 之 Ubuntu使用apt方式安装Nginx官方最新版本
linux·运维·服务器·nginx·ubuntu·http
顶点多余7 小时前
多路转接--select /poll
运维·服务器
老毛肚7 小时前
微服务网关整合授权中心实现单点登录
运维·微服务·架构
小梦爱安全7 小时前
配置RIP动态路由协议
运维·网络
闫记康7 小时前
Linux学习day3
linux·服务器·学习
墨着染霜华7 小时前
Windows 启动 Nginx 一闪而过、pid 丢失、logs 目录报错彻底解决
运维·windows·nginx
皆圥忈7 小时前
Linux 进程管理从入门到实战(一)
linux
雪度娃娃7 小时前
Asio——socket的创建和连接
linux·运维·服务器·c++·网络协议