商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 系统应用 > 麒麟OS如何设置进程自动崩溃重启

麒麟OS如何设置进程自动崩溃重启

  发布于2026-08-19 阅读(0)

扫一扫,手机访问

麒麟OS中关键进程崩溃时,首选systemd用户服务配置自动重启(Type=simple+Restart=on-failure),次选supervisord(需显式设environment),应急可用shell循环脚本兜底。

麒麟OS如何设置进程自动崩溃重启

当麒麟OS中某个关键进程(如自研服务、监控脚本或第三方守护程序)频繁崩溃导致业务中断,又无法从源码层修复时,需配置其自动崩溃重启机制,避免人工干预延误恢复。

用systemd服务配置崩溃自动重启

这是最稳定、可审计、支持依赖管理的方式,适用于所有能以服务形式运行的进程,包括shell脚本、Python后台程序、Ja va微服务等。

第一步:创建用户级service文件
执行命令:mkdir -p ~/.config/systemd/user && nano ~/.config/systemd/user/myproc.service

第二步:填入标准单元配置,关键字段必须准确——【Type=simple且Restart=on-failure不可省略,否则崩溃后不会重启】
内容如下:

[Unit]
Description=我的核心处理进程
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/myproc --daemon
Restart=on-failure
RestartSec=3
StandardOutput=journal
StandardError=journal
User=kylin
Group=kylin

[Install]
WantedBy=default.target

第三步:启用并启动服务
首先,启用linger以确保在登录前可以运行:loginctl enable-linger $USER。然后,重载配置:systemctl --user daemon-reload。最后,启用并立即启动:systemctl --user enable --now myproc.service

第四步:验证是否生效
手动杀死进程测试:pkill -f "myproc --daemon" → 等待3秒 → 执行 systemctl --user status myproc.service,确认状态为 active (running)Active: ... since ... 时间是最新戳。

用supervisord守护进程(替代方案)

如果你已习惯Python生态或需要更细粒度的日志切分、输出重定向、环境变量注入,supervisord比原生systemd更易调试,但需额外安装。

方法一:安装并初始化
执行:sudo apt install supervisor → 启动主服务:sudo systemctl enable --now supervisor

方法二:为进程新建conf配置
编辑:sudo nano /etc/supervisor/conf.d/myproc.conf,内容如下:

[program:myproc]
command=/usr/local/bin/myproc --daemon
autostart=true
autorestart=true
startretries=3
user=kylin
redirect_stderr=true
stdout_logfile=/var/log/myproc.log
stdout_logfile_maxbytes=10MB

方法三:加载并检查
执行:sudo supervisorctl rereadsudo supervisorctl updatesudo supervisorctl status,看到 myproc RUNNING 即成功。

【注意:supervisord默认不读取~/.bashrc中的环境变量,若进程依赖PATH或自定义变量,必须在conf中显式写入environment字段】

用shell循环脚本兜底(仅限临时应急)

当systemd不可用、supervisord未装、或你只想快速验证进程能否持续存活时,可用最简方式实现“崩溃即拉起”,但无日志、无依赖、无资源限制。

新建脚本:nano ~/bin/loop-myproc.sh,内容为:

#!/bin/bash
while true; do
/usr/local/bin/myproc --daemon
sleep 2
done

赋予执行权限:chmod +x ~/bin/loop-myproc.sh

将用户级autostart添加进来:mkdir -p ~/.config/autostart && cp /usr/share/applications/org.gnome.Terminal.desktop ~/.config/autostart/loop-myproc.desktop

编辑该.desktop文件,将Exec=行改为:Exec=gnome-terminal -- bash -c "~/bin/loop-myproc.sh; exec bash" —— 这样终端窗口会常驻,便于观察输出。

本文转载于:https://www.php.cn/faq/3012876.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注