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

总结

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

相关推荐
运维老郭34 分钟前
【K8s运维实战】Kubernetes临时存储卷实战:emptyDir核心用法与gitRepo弃用迁移指南
运维·云原生·kubernetes
珠海西格电力1 小时前
云边端协同架构:零碳园区管理系统的技术底座
大数据·运维·人工智能·算法·架构·能源
阿成学长_Cain1 小时前
Linux dirs命令详解|Bash目录堆栈管理快速切换目录实战教程
linux·运维·前端·数据库
小羊Yveesss2 小时前
2026年微信小程序后端怎么搭建?后台、数据、接口和运维怎么选
运维·微信小程序·小程序
ICECREAM2 小时前
Linux 进程间通讯(IPC)——总结
linux
想你依然心痛3 小时前
嵌入式Linux安全加固:SELinux、Capabilities与Seccomp——强制访问控制与沙箱
linux·运维·安全
AAA@峥4 小时前
容器数据不丢失:Docker 分层存储 + Volume 共享、备份迁移完整指南
运维·docker·容器
MDM.Plus5 小时前
苹果MDM技术演进:从远程控制到设备信任体系的构建
运维·服务器·安全·ios·mdm·手机店
REDcker5 小时前
macOS 挂载 Linux 远程目录详解
linux·运维·macos
2601_961593425 小时前
Mac 上搭建Linux环境吗?VMware + CentOS Stream 9 镜像快速部署
linux·运维·ide·macos·centos