news 2026/9/3 4:12:29

测试开机启动脚本使用指南:让Linux服务随系统启动

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
测试开机启动脚本使用指南:让Linux服务随系统启动

测试开机启动脚本使用指南:让Linux服务随系统启动

在Linux系统中,我们经常需要让某些任务或服务在系统启动时自动运行,比如启动监控脚本、初始化环境变量、运行后台程序等。本文将围绕“测试开机启动脚本”这一实际需求,详细介绍几种稳定可靠的开机自启方案,帮助你轻松实现脚本随系统启动,无需手动干预。

无论你是运维人员、开发者,还是树莓派/工控机用户,掌握这些方法都能显著提升系统的自动化能力。我们将从最基础的脚本准备开始,逐步讲解不同机制的配置方式、适用场景及注意事项,确保你能根据实际环境选择最适合的方案。

1. 准备测试脚本

在配置开机启动之前,首先要准备好你要运行的脚本。以下是一个简单的测试脚本示例,用于验证脚本是否成功执行。

#!/bin/bash # test.sh cd /home/Desktop/ ls echo "OK!" exit 0

脚本说明:

  • 切换到桌面目录
  • 执行ls查看文件列表
  • 输出 “OK!” 表示脚本已运行
  • 正常退出(exit 0)

设置权限并测试运行:

chmod +x test.sh ./test.sh

确保脚本能正常执行后再进行后续配置。建议将脚本放置在一个固定路径下,如/home/username/Desktop/test.sh/opt/scripts/test.sh,避免路径问题导致启动失败。

2. 使用 /etc/init.d 方法(SysVinit 风格)

这是传统 Linux 系统中最常见的开机启动方式之一,适用于使用 SysVinit 的旧版 Ubuntu 或 Debian 系统。

操作步骤:

将脚本移入 init.d 目录
sudo mv test.sh /etc/init.d/
赋予可执行权限
sudo chmod 755 /etc/init.d/test.sh

建议不要使用 777,除非有特殊需求,安全起见推荐 755。

注册为开机启动项
sudo update-rc.d test.sh defaults

这会为脚本创建相应的符号链接,使其在系统启动和关闭时按默认优先级运行。

自定义启动优先级(可选)

如果你希望控制脚本的执行顺序,可以指定优先级数字:

sudo update-rc.d test.sh defaults 90

数字越大,执行越晚。例如 90 比 80 更晚执行。

移除开机启动

如果后续不再需要该脚本自启,可执行:

sudo update-rc.d -f test.sh remove

注意事项:

  • /etc/init.d脚本通常在系统早期阶段运行,可能早于图形界面加载。
  • 若脚本依赖桌面环境或用户登录状态,可能会失败。
  • 现代 Ubuntu 系统多采用 systemd,此方法兼容性有限,仅建议在老系统中使用。

3. 使用 gnome-session-properties(图形化自启)

对于桌面用户,尤其是使用 GNOME 桌面环境的 Ubuntu 用户,可以通过图形界面设置用户级别的开机自启动程序。

启动自启动管理器

打开终端,运行:

gnome-session-properties

你会看到一个图形窗口,列出当前用户的开机启动程序。

添加新启动项

点击“添加”按钮,填写以下信息:

  • 名称:Test Script
  • 命令gnome-terminal -x bash -c "/home/username/Desktop/test.sh; read"
  • 注释:运行测试脚本并保持终端打开

注意替换username为你的实际用户名。

命令解析:
  • gnome-terminal:打开终端窗口
  • -x bash -c:执行后面的命令字符串
  • read:防止终端立即关闭,便于查看输出结果

点击“添加”后,重启系统即可生效。

间接方式:通过 .bashrc 触发

你也可以将脚本调用写入~/.bashrc,并在自启动中仅启动终端:

# 在 ~/.bashrc 末尾添加 if [ -f /home/username/Desktop/test.sh ]; then /home/username/Desktop/test.sh fi

然后在gnome-session-properties中添加命令:

gnome-terminal

这样每次打开终端时都会自动执行脚本,适合调试场景。

适用场景:

  • 图形界面用户
  • 需要与桌面环境交互的脚本
  • 工控机设置自动登录+自动运行前端应用

4. 使用 rc.local 方法(通用性强)

rc.local是一个传统的系统级启动脚本,在大多数 Linux 发行版中都存在,且兼容性良好。

编辑 rc.local 文件

sudo nano /etc/rc.local

exit 0之前添加你的命令:

#!/bin/sh -e # # rc.local # # 添加你的脚本调用 su - username -c "cd /home/username/Desktop && ./test.sh" exit 0

必须确保rc.local文件本身具有执行权限,并且服务单元已启用(现代系统需额外配置)。

设置 rc.local 可执行

sudo chmod +x /etc/rc.local

对于使用 systemd 的系统,需启用 rc-local 服务

创建或编辑/etc/systemd/system/rc-local.service

[Unit] Description=/etc/rc.local Compatibility ConditionPathExists=/etc/rc.local [Service] Type=forking ExecStart=/etc/rc.local start TimeoutSec=0 StandardOutput=tty RemainAfterExit=yes SysVStartPriority=99 [Install] WantedBy=multi-user.target

启用服务:

sudo systemctl enable rc-local.service

注意事项:

  • rc.local在系统网络和服务初始化之后运行,但仍在用户登录前。
  • 若脚本涉及 GUI 或用户环境变量,需使用su - username显式切换用户。
  • 日志可通过journalctl -u rc-local查看,便于排查错误。

5. 推荐方案对比与选择建议

不同方法适用于不同的使用场景,以下是各方案的综合对比,帮助你做出合理选择。

方案适用系统执行时机是否需要图形界面安全性推荐指数
/etc/init.d+update-rc.dSysVinit 系统系统启动早期
gnome-session-propertiesGNOME 桌面系统用户登录后
rc.local大多数 Linux系统启动后期

选择建议:

  • 服务器/无界面设备:优先使用rc.local,简单稳定,兼容性好。
  • 桌面用户/工控机带屏设备:推荐gnome-session-properties,支持终端展示输出,便于调试。
  • 老旧系统维护:可继续使用/etc/init.d方式,但注意权限和路径问题。
  • 生产环境自动化部署:建议结合 Ansible 或 Shell 脚本统一配置rc.local

6. 常见问题与排查技巧

即使配置正确,有时脚本仍无法正常运行。以下是常见问题及其解决方案。

问题1:脚本未执行,无任何输出

  • 原因:路径错误、权限不足、环境变量缺失
  • 解决
    • 使用绝对路径调用脚本
    • 确保脚本有执行权限:chmod +x script.sh
    • 在脚本开头显式指定解释器:#!/bin/bash

问题2:脚本报错“Permission denied”

  • 原因:文件权限不足或 SELinux/AppArmor 限制
  • 解决
    • 检查所有父目录是否有读取权限
    • 使用ls -l确认脚本权限为-rwxr-xr-x
    • 临时禁用安全模块测试是否相关

问题3:脚本能手动运行,但开机不执行

  • 原因:缺少环境变量或工作目录不一致
  • 解决
    • 在脚本中显式切换目录:cd "$(dirname "$0")"
    • 使用完整路径调用依赖命令(如/bin/ls而非ls
    • 添加日志记录以便追踪:
      exec >> /tmp/startup.log 2>&1 echo "[$(date)] Starting test script..."

问题4:rc.local 不生效

  • 原因:systemd 未启用 rc-local 服务
  • 解决
    • 确认/etc/systemd/system/rc-local.service存在并启用
    • 运行sudo systemctl status rc-local查看状态
    • 检查日志:journalctl -u rc-local

获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 2:29:23

Qwen-Image-2512功能测评:中文渲染与图像编辑表现如何

Qwen-Image-2512功能测评:中文渲染与图像编辑表现如何 1. 引言:为什么这款模型值得关注? 你有没有遇到过这样的尴尬?输入一段精心设计的中文提示词,结果生成的图片里文字全是乱码、错位,甚至干脆不显示。…

作者头像 李华
网站建设 2026/9/2 17:06:13

3步零基础打造p5.js音乐可视化:让代码与旋律共舞 ✨

3步零基础打造p5.js音乐可视化:让代码与旋律共舞 ✨ 【免费下载链接】p5.js p5.js is a client-side JS platform that empowers artists, designers, students, and anyone to learn to code and express themselves creatively on the web. It is based on the co…

作者头像 李华
网站建设 2026/9/3 3:26:42

palera1n越狱终极指南:从新手到专家的完整操作手册

palera1n越狱终极指南:从新手到专家的完整操作手册 【免费下载链接】palera1n Jailbreak for arm64 devices on iOS 15.0 项目地址: https://gitcode.com/GitHub_Trending/pa/palera1n 还在为iOS系统的限制而苦恼吗?想要完全掌控你的iPhone设备&a…

作者头像 李华
网站建设 2026/9/2 16:00:12

餐厅环境评估:顾客满意度语音AI检测部署案例

餐厅环境评估:顾客满意度语音AI检测部署案例 1. 引言:用声音感知顾客情绪,重新定义餐厅体验管理 你有没有过这样的经历?走进一家餐厅,明明装修不错、菜品也还行,但就是感觉“哪里不对”——氛围冷清、服务…

作者头像 李华
网站建设 2026/8/25 16:12:34

iPad越狱完全指南:从入门到精通的技术实践

iPad越狱完全指南:从入门到精通的技术实践 【免费下载链接】palera1n Jailbreak for arm64 devices on iOS 15.0 项目地址: https://gitcode.com/GitHub_Trending/pa/palera1n 随着iOS系统的不断更新,越来越多的用户希望能够突破系统限制&#xf…

作者头像 李华