0

0

Linux 进程自动重启配置方法

舞夢輝影

舞夢輝影

发布时间:2026-03-02 17:18:12

|

270人浏览过

|

来源于php中文网

原创

linux进程自动重启首选systemd(现代发行版),其次supervisor(多进程/老旧系统),最后shell脚本+crontab(临时验证);三者均需配合日志轮转与健康检查。

linux 进程自动重启配置方法

Linux 进程自动重启的核心目标是:进程意外退出后能被及时捕获并拉起,保障服务持续可用。关键不在于“怎么让它重启”,而在于“谁来监控、何时重启、如何避免雪崩”。主流可靠方案有三种,按推荐度和适用场景排序如下:

systemd 服务管理(推荐用于现代发行版)

这是当前最主流、最稳定的方式,适用于 CentOS 7+/Ubuntu 16.04+ 等使用 systemd 的系统。它原生支持依赖管理、日志集成、重启策略和资源限制。

  • 创建服务文件,例如 /etc/systemd/system/myapp.service

[Unit]
Description=My Web Service
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/myapp
User=www-data
Restart=always
RestartSec=5
StartLimitInterval=0

[Install]
WantedBy=multi-user.target

  • 关键参数说明:
     • Restart=always:除主动 stop 外,崩溃、信号终止、退出码非 0 都触发重启
     • RestartSec=5:每次重启前等待 5 秒,避免高频闪退打满系统
     • StartLimitInterval=0:禁用启动频率限制(默认 10 秒内最多 5 次,超限则暂停)
     • Type=simple:适用于前台运行的程序;若程序 daemonize 自身,改用 Type=forking
  • 启用并启动:
    sudo systemctl daemon-reload
    sudo systemctl enable --now myapp.service

Supervisor 进程守护(适合多进程或老旧系统)

当系统未使用 systemd(如某些嵌入式环境),或需集中管理多个异构应用(Python/Node.js/Java 混合部署)时,Supervisor 是成熟选择。它提供命令行控制(supervisorctl)和简易 Web 界面。

乐活途—购物分享社区 X2.0
乐活途—购物分享社区 X2.0

安装说明重要提醒:程序不支持二级目录安装,请使用一级目录或二级目录绑定!第一步,确定你的服务器支持PHP+mysql。第二步,确定你的服务器开启了gd库。第三步,将upload文件内的文件上传到网站的根目录第四步,访问你的域名+ /install/index.html进行安装,linux系统访问你的域名+ /Install/index.html第五步,按照安装程序步骤进行安装配置第六步,安装完毕后

下载
  • 安装与配置(以 Debian/Ubuntu 为例):
    sudo apt install supervisor
     新建 /etc/supervisor/conf.d/myapp.conf

[program:myapp]
command=/usr/local/bin/myapp
autostart=true
autorestart=true
startretries=3
user=www-data
redirect_stderr=true
stdout_logfile=/var/log/myapp.log

  • 生效配置:
    sudo supervisorctl reread
    sudo supervisorctl update
    sudo supervisorctl start myapp
  • 优势:自带日志轮转、状态查询直观(supervisorctl status)、支持组管理,适合运维统一维护。

轻量级 Shell 脚本 + crontab(适合临时验证或极简场景)

无需额外安装,适合快速验证或资源受限环境。但注意:它不具备进程父子关系管理,也不记录详细退出原因,仅作兜底补充。

  • 编写监控脚本 /opt/bin/monitor-myapp.sh

#!/bin/sh
APP_NAME="myapp"
if ! pgrep -f "$APP_NAME" > /dev/null; then
  echo "$(date): $APP_NAME not running, restarting..." >> /var/log/myapp-monitor.log
  /usr/local/bin/myapp &
fi

  • 赋予执行权限:chmod +x /opt/bin/monitor-myapp.sh
  • 每分钟检查一次:
    crontab -e,添加一行:
    */1 * * * * /opt/bin/monitor-myapp.sh
  • 提醒:避免脚本本身出错导致无限 fork;建议加简单锁机制(如 touch /tmp/myapp.lock)或用 flock 防重入。

实际选型时,优先用 systemd;已有 Supervisor 生态可延续使用;脚本方案仅建议用于测试环境或过渡期。三者都可配合日志轮转(logrotate)和服务健康检查(如 curl -f http://localhost:8080/health)进一步增强可靠性。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

249

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

967

2024.03.01

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

839

2023.08.22

curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

453

2023.06.14

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

183

2023.10.30

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

530

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

514

2023.07.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

658

2023.08.03

Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

45

2026.02.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 10万人学习

Git 教程
Git 教程

共21课时 | 4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号