麒麟OS上可通过systemd用户级服务实现监控脚本开机自启:确认脚本路径与权限,创建~/.config/systemd/user/db-monitor.service,启用linger并reload、enable、start服务;GUI程序可用.desktop文件添加自启动;root级监控则配置系统级service并启用。

你在麒麟OS上部署了一个数据库监控脚本,每次重启后都得手动运行,既耽误时间又容易遗漏——现在需要让它在系统启动时自动拉起并持续运行,确保数据库状态实时可见。
用systemd用户级服务实现监控脚本开机自启
这是最稳妥的方式,适用于你以普通用户身份运行的Python或Shell监控脚本,能自动重启失败进程、记录日志、依赖网络就绪。
第一步:确认监控脚本路径和可执行权限
比如你的脚本存放在/home/kylin/bin/db-monitor.sh,先运行chmod +x /home/kylin/bin/db-monitor.sh。如果脚本依赖Python环境,确保#!/usr/bin/env python3开头且python3在PATH中。
第二步:创建用户级service文件mkdir -p ~/.config/systemd/user && nano ~/.config/systemd/user/db-monitor.service
第三步:填入以下内容(注意替换ExecStart为你的实际路径):
[Unit]
Description=Database Monitor Service
After=network.target
[Service]
Type=simple
ExecStart=/home/kylin/bin/db-monitor.sh
Restart=always
RestartSec=5
User=kylin
Environment=DISPLAY=:0
Environment=XDG_RUNTIME_DIR=/run/user/1000
[Install]
WantedBy=default.target
第四步:启用并立即启动loginctl enable-linger kylin → systemctl --user daemon-reload → systemctl --user enable --now db-monitor.service
【必须执行loginctl enable-linger】否则用户级systemd实例不会在登录前启动,监控服务将延迟甚至不生效。
通过图形界面添加.desktop启动项(仅限GUI程序)
如果你的监控工具带图形界面(比如用PyQt写的仪表盘),且希望它随桌面一起启动,这个方法最直观。
方法一:直接在设置里添加
点击左下角“开始菜单”→“设置”→“系统”→“开机启动”→“添加自启动程序”,在命令栏输入/usr/bin/python3 /home/kylin/app/monitor-gui.py,名称填“数据库监控面板”,点“添加”即可。
方法二:复用现有.desktop文件
若已有/usr/share/applications/db-monitor.desktop,检查其中Exec=行是否为绝对路径(如Exec=/usr/bin/python3 /home/kylin/app/monitor-gui.py),然后复制到~/.config/autostart/目录:cp /usr/share/applications/db-monitor.desktop ~/.config/autostart/。
这一步操作起来很简单,直接把文件拖进去就行。但注意:.desktop文件里的Exec=必须是完整路径,相对路径会失败。
配置systemd系统级服务(适用于root权限监控)
当你需要监控MySQL服务本身,或必须以root身份运行(例如监听3306端口、读取/var/log/mysql/error.log),就得走系统级服务路径。
① 创建服务文件:sudo nano /etc/systemd/system/db-monitor-root.service
② 写入配置(关键字段不可省略):
[Unit]
Description=Root-Level DB Monitor
After=mysqld.service network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/bin/db-monitor-probe.sh
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
③ 设置权限并启用:sudo chmod 644 /etc/systemd/system/db-monitor-root.service → sudo systemctl daemon-reload → sudo systemctl enable --now db-monitor-root.service
验证是否生效:sudo systemctl status db-monitor-root.service,看到active (running)即成功。

















