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

您的位置: 首页 > 文章列表 > 系统应用 > 银河麒麟V10如何添加开机启动脚本

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

  发布于2026-07-02 阅读(0)

扫一扫,手机访问

在银河麒麟V10系统中,想让脚本在开机时自动跑起来,并不是一个命令打天下的事儿。关键要看你的脚本是给系统看的,还是给用户看的——系统级服务有系统级的玩法,桌面程序有桌面程序的套路,用错了地方,脚本就会在你看不见的角落静悄悄地失败。

下面这几种主流机制,基本能覆盖所有场景了。

第一种:systemd服务,系统级任务的可靠选择

如果你的脚本是后台守护进程,或者需要在系统启动阶段就运行,那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

执行完后,记得用sudo systemctl status myscript.service确认一下状态,确保是active (running)

第二种:/etc/rc.local,传统方式的复活术

如果你用惯了Ubuntu的老路子,可能会惊讶地发现银河麒麟V10 SP1默认没有/etc/rc.local这个文件。别急,手动创建并激活rc-local服务就行。

第一步是启用rc-local服务链。执行sudo systemctl enable rc-local.service之前,最好先确认/lib/systemd/system/rc-local.service这个文件是存在的。

第二步,创建并配置/etc/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

第三种:图形界面程序的自启动,交给UKUI处理

如果你的脚本是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,同样加上这一行。

【易错点】crontab的环境变量非常干净,脚本内所有命令都必须用绝对路径。一个稳妥的做法是在脚本开头显式设置PATH

PATH=/usr/local/bin:/usr/bin:/bin

这样一来,很多莫名其妙的“命令找不到”问题就迎刃而解了。

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

热门关注