发布于2026-08-19 阅读(0)
扫一扫,手机访问
麒麟OS中关键进程崩溃时,首选systemd用户服务配置自动重启(Type=simple+Restart=on-failure),次选supervisord(需显式设environment),应急可用shell循环脚本兜底。

当麒麟OS中某个关键进程(如自研服务、监控脚本或第三方守护程序)频繁崩溃导致业务中断,又无法从源码层修复时,需配置其自动崩溃重启机制,避免人工干预延误恢复。
这是最稳定、可审计、支持依赖管理的方式,适用于所有能以服务形式运行的进程,包括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 ... 时间是最新戳。
如果你已习惯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 reread → sudo supervisorctl update → sudo supervisorctl status,看到 myproc RUNNING 即成功。
【注意:supervisord默认不读取~/.bashrc中的环境变量,若进程依赖PATH或自定义变量,必须在conf中显式写入environment字段】
当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" —— 这样终端窗口会常驻,便于观察输出。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
4
5
6
7
8
9