一聚教程网:一个值得你收藏的教程网站

热门教程

银河麒麟V10开机启动脚本如何添加

时间:2026-07-04 08:03:03 编辑:袖梨 来源:一聚教程网

在银河麒麟V10中实现脚本开机自启需按场景选择机制:系统级服务用systemd(需root权限、绝对路径、权限644、daemon-reload并enable);传统方式需手动启用rc-local服务并配置可执行的/etc/rc.local;GUI程序须通过/etc/xdg/autostart/下.desktop文件由UKUI触发;轻量单次任务可用crontab @reboot,但须显式设置PATH。

在银河麒麟V10系统中让自定义脚本开机自动运行,必须明确区分系统级服务与用户级图形程序的启动机制——systemd服务适用于后台守护进程,而桌面应用需依赖UKUI环境的autostart机制,混用会导致脚本静默失败。

通过systemd创建系统级开机服务

第一步:用root权限在/etc/systemd/system/下新建服务文件,例如myscript.service

sudo vim /etc/systemd/system/myscript.service

第二步:写入以下内容,注意ExecStart必须使用绝对路径,且不能依赖用户环境变量:

[Unit]
Description=My Custom Script
After=network.target

[Service]
Type=simple
ExecStart=/bin/bash /opt/scripts/myscript.sh
Restart=on-failure
RestartSec=5
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

第三步:设置文件权限为644,属主为root:root——权限错误会导致systemd拒绝加载该服务:

sudo chmod 644 /etc/systemd/system/myscript.service

第四步:重载配置并启用服务:

sudo systemctl daemon-reload → sudo systemctl enable myscript.service → sudo systemctl start myscript.service

第五步:验证服务状态,检查是否处于active (running):

sudo systemctl status myscript.service

通过/etc/rc.local实现传统方式启动

银河麒麟V10SP1默认不提供/etc/rc.local,需手动创建并激活rc-local服务:

方法一:启用rc-local服务链

执行sudo systemctl enable rc-local.service前,先确认/lib/systemd/system/rc-local.service存在且已正确配置;若不存在,需从备份恢复或重新生成。

方法二:创建并配置rc.local文件

创建文件:sudo touch /etc/rc.local

编辑内容(必须以#!/bin/bash开头,且末尾保留空行和exit 0):

#!/bin/bash
/opt/scripts/myscript.sh &
exit 0

【关键前提】执行sudo chmod +x /etc/rc.local,否则脚本不会被执行。

最后启用服务:sudo systemctl daemon-reload → sudo systemctl start rc-local.service → sudo systemctl enable rc-local.service

为图形界面程序添加用户级自启动

适用于需要显示GUI窗口的Qt、Python tkinter等程序,必须在用户登录后由UKUI桌面环境触发:

① 创建.desktop文件:

sudo vim /etc/xdg/autostart/myapp.desktop

② 写入内容,其中NameExec字段不可为空,Exec路径必须绝对且可执行:

[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=My Qt App
Exec=/home/kylin/build-myapp-Release/myapp
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true

③ 确保目标程序具备执行权限:

chmod +x /home/kylin/build-myapp-Release/myapp

④ 重启或注销重登生效。若程序未启动,检查.xsession-errors日志定位环境变量缺失问题。

使用crontab @reboot实现轻量启动

适合单次执行、无需持续守护的脚本,不推荐用于长期运行的服务:

方法一(当前用户):crontab -e,添加一行:

@reboot /bin/bash /opt/scripts/myscript.sh

方法二(root用户):sudo crontab -e,同样添加@reboot行。

【易错点】脚本内所有命令路径必须绝对,不能依赖$PATH;建议在脚本开头显式设置PATH=/usr/local/bin:/usr/bin:/bin

热门栏目