零基础部署开机启动脚本,用测试开机启动脚本快速上手

零基础部署开机启动脚本,用测试开机启动脚本快速上手

你是不是也遇到过这样的问题:写好了一个自动化脚本,每次重启电脑后还得手动点开终端、cd到目录、再执行一遍?重复操作太麻烦,还容易忘记。其实,Linux系统早就为你准备好了“开机自动运行”的能力——只要几步简单配置,就能让脚本在系统启动时悄悄完成任务。

本文专为零基础用户设计,不讲晦涩原理,不堆参数命令,只聚焦一件事:用最直白的方式,把一个测试脚本变成开机就跑的“隐形助手”。我们用的是预置镜像“测试开机启动脚本”,里面已准备好可直接运行的示例脚本,你只需照着做,5分钟内就能看到效果。

全文覆盖三种主流、稳定、实测有效的开机自启方案:/etc/init.d传统服务式、gnome-session-properties桌面级图形化方式、rc.local系统级通用方式。每种都附带完整命令、注意事项和避坑提示,连权限错误、路径失效、桌面未加载等新手高频问题都提前标出。不需要懂systemd,也不用查手册,打开就能用。


1. 先跑通测试脚本:确认它真的能工作

在配置开机启动前,必须先验证脚本本身是否正常。很多同学卡在这一步却没意识到——不是配置错了,而是脚本根本没跑通。

1.1 查看并理解测试脚本内容

镜像中已提供一个名为test.sh的测试脚本,内容如下:

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

这段脚本做了三件事:

  • 声明使用 bash 解释器(#!/bin/bash
  • 切换到当前用户的桌面目录(cd /home/Desktop/
  • 列出该目录下所有文件(ls
  • 打印一句“OK!”(echo "OK!"
  • 正常退出(exit 0

注意:这里的/home/Desktop/是通用写法,实际路径取决于你的用户名。比如你的用户名是alice,真实路径应为/home/alice/Desktop/。这点后面会重点处理。

1.2 手动执行一次,确认无报错

打开终端,执行以下命令:

# 进入脚本所在目录(假设它在桌面) cd ~/Desktop/ # 赋予执行权限(首次运行必需) chmod +x test.sh # 运行脚本 ./test.sh

如果看到类似这样的输出,说明脚本本身完全正常:

example.txt report.pdf test.sh OK!

成功标志:有文件列表 + “OK!” 输出 + 终端返回提示符(没有卡住或报错)。

如果提示No such file or directory,大概率是路径写错了——别急,我们马上解决。

1.3 修复路径问题:让脚本适配任意用户

原脚本中写死的/home/Desktop/在大多数 Ubuntu 桌面系统中并不准确。正确写法是用环境变量$HOME

#!/bin/bash cd "$HOME/Desktop/" ls echo "OK!" exit 0

小知识:$HOME是 Linux 系统自动设置的环境变量,指向当前登录用户的家目录(如/home/alice)。加双引号是为了防止用户名含空格时出错。

修改后再次执行./test.sh,确保仍能正常输出。这一步做完,脚本才真正具备“可部署”资格。


2. 方案一:/etc/init.d 方式(适合需要服务化管理的场景)

这是最经典、兼容性最强的方法,适用于希望脚本像系统服务一样被管理(如手动启停、查看状态)的用户。它在 Ubuntu 16.04 及更早版本中是默认机制,虽然后续版本转向 systemd,但/etc/init.d仍被完整兼容。

2.1 把脚本移到系统服务目录

# 将脚本复制到 /etc/init.d/(注意:不是移动,保留原文件便于调试) sudo cp ~/Desktop/test.sh /etc/init.d/test-startup # 赋予可执行权限(必须用 sudo) sudo chmod +x /etc/init.d/test-startup

关键点:

  • 文件名建议用短横线分隔(如test-startup),避免下划线或空格;
  • 不要改扩展名(.sh可省略,但保留也无妨);
  • 权限必须是755777,普通用户权限不够。

2.2 注册为开机启动项

# 启用默认启动(系统会在多级别自动运行) sudo update-rc.d test-startup defaults # 如果想让它晚一点运行(比如等网络就绪后再执行),可指定优先级 sudo update-rc.d test-startup defaults 99

defaults表示在运行级别 2–5(即图形界面和多用户模式)下启用。数字99是启动顺序编号,数值越大越靠后执行(00–99),一般脚本用9099比较安全。

2.3 验证与调试

重启系统后,检查是否生效:

# 查看脚本是否已注册 sudo systemctl list-unit-files | grep test-startup # 或查看日志(脚本输出会被记录到系统日志) sudo journalctl -u test-startup --no-pager -n 20

常见问题:

  • 脚本没输出到桌面?因为/etc/init.d脚本在系统级运行,没有图形会话,echo不会显示在终端里。它实际执行了,只是你看不见。验证方法:在脚本里加一行touch /tmp/test-ran,重启后检查/tmp/test-ran文件是否存在。
  • 权限被拒绝?确保脚本第一行是#!/bin/bash,且chmod +x已执行。
  • 路径还是错?再次强调:务必用$HOME替代硬编码路径,并在脚本中显式cd "$HOME/Desktop/"

2.4 如何移除该启动项

如果想取消,一条命令即可:

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

-f参数表示强制移除,无需担心残留。


3. 方案二:gnome-session-properties 图形化方式(最适合桌面用户)

如果你用的是 Ubuntu 桌面版(GNOME 桌面环境),这个方法最直观、最友好——全程点点鼠标,不用记命令,也不用碰 root 权限。

3.1 打开“启动应用程序”管理器

在 Ubuntu 桌面左上角搜索框输入Startup Applications,或直接运行:

gnome-session-properties

窗口打开后,你会看到已启用的开机启动程序列表(如 Dropbox、网易云音乐等)。

3.2 添加新启动项

点击右下角Add按钮,填写三项:

  • 名称(Name):随便填,比如My Test Script

  • 命令(Command):关键!填入以下任一形式:

    推荐(间接启动,更稳定):

    gnome-terminal -- bash -c 'cd "$HOME/Desktop"; ./test.sh; exec bash'

    直接启动(简洁,但需确保脚本有执行权):

    /home/your-username/Desktop/test.sh

    注意:把your-username替换成你的真实用户名,如alice。也可用$HOME,但部分旧版 GNOME 不支持环境变量解析,稳妥起见建议写死路径或用第一种方式。

  • 注释(Comment):可选,写个备注,比如“测试脚本开机运行”

点击Add,关闭窗口。

3.3 验证与优化体验

重启后,你会看到一个终端窗口一闪而过(执行完自动关闭)。如果想让它停留几秒看结果,把命令末尾加上sleep 5

gnome-terminal -- bash -c 'cd "$HOME/Desktop"; ./test.sh; sleep 5; exec bash'

小技巧:

  • 若工控机或无人值守设备使用,建议在系统设置中开启“自动登录”,否则脚本不会触发;
  • 此方式仅对当前用户生效,切换账户后不运行;
  • 所有操作都在用户空间,完全规避 root 权限风险。

4. 方案三:rc.local 方式(最通用、最轻量)

rc.local是一个古老但极其可靠的机制:它在系统初始化末期、所有服务启动完毕后执行,且保证以 root 权限运行。它不依赖桌面环境,也不需要复杂注册,适合嵌入式、服务器或最小化安装场景。

4.1 编辑 rc.local 文件

sudo nano /etc/rc.local

将光标移到exit 0上方,插入以下内容(注意保持缩进一致):

# 启动测试脚本 cd /home/your-username/Desktop/ && ./test.sh >/tmp/test-log.txt 2>&1 || true

解释:

  • cd ... && ./test.sh:先进入目录再执行;
  • >/tmp/test-log.txt 2>&1:把标准输出和错误都存到日志文件,方便排查;
  • || true:即使脚本失败也不中断整个 rc.local 执行。

记得把your-username换成你自己的用户名。

4.2 确保 rc.local 服务已启用

Ubuntu 18.04+ 默认禁用rc.local,需手动启用:

# 创建 systemd 服务单元(如果不存在) sudo systemctl enable rc-local.service # 检查状态 sudo systemctl status rc-local

如果提示Failed to enable unit,说明/etc/rc.local文件权限不对:

sudo chmod +x /etc/rc.local

4.3 为什么这个方法容易失败?关键提醒

rc.local登录前执行,此时:

  • 图形界面(X11/Wayland)尚未启动;
  • $HOME环境变量可能未加载;
  • 某些桌面相关命令(如notify-send)会失败;
  • cdlsechotouch等基础命令完全没问题。

所以我们的测试脚本(只做文件操作)非常适合此方式。如果你的脚本需要调用浏览器、弹窗或访问用户桌面文件,请优先选择方案二(gnome-session-properties)


5. 三种方案对比与选型建议

面对不同需求,没有“最好”,只有“最合适”。下面这张表帮你一眼锁定首选方案:

对比维度/etc/init.d方式gnome-session-properties方式rc.local方式
适用系统所有 Debian/Ubuntu(含服务器版)仅 Ubuntu 桌面版(GNOME)所有 Linux(最通用)
是否需 root是(注册时)否(纯用户级)是(编辑文件)
是否需图形界面是(依赖 GNOME 桌面)
执行时机多级别启动时(S2–S5),较早用户登录桌面后(最晚)系统初始化完成、登录前(中间偏晚)
调试难度中(需查 journalctl)低(终端可见,日志易读)中(需查/tmp/test-log.txt
推荐给谁系统管理员、需服务化管理的脚本普通桌面用户、不想碰命令行的新手工控机、服务器、嵌入式设备、极简环境

一句话选型口诀:

  • 你是开发者或运维?→ 选/etc/init.d(可控性强,可集成监控);
  • 你就是日常用 Ubuntu 写代码/做设计?→ 选gnome-session-properties(零门槛,所见即所得);
  • 你在树莓派、工控机上跑无人值守程序?→ 选rc.local(不依赖桌面,稳如磐石)。

6. 实战避坑指南:90% 的失败都源于这5个细节

再好的教程,也架不住几个小疏忽。以下是我们在真实环境中反复验证过的“高危雷区”,请逐条核对:

6.1 路径写死 ≠ 路径正确

❌ 错误:cd /home/Desktop/
正确:cd "$HOME/Desktop/"cd "/home/your-username/Desktop/"
原因:/home/Desktop/是无效路径,正确路径是/home/用户名/Desktop/

6.2 脚本没权限 = 一定失败

❌ 错误:只写./test.sh却没执行chmod +x test.sh
正确:任何方式部署前,先chmod +x ~/Desktop/test.sh
原因:Linux 默认不执行无执行权限的文件,报错Permission denied

6.3 忘记#!/bin/bash头部

❌ 错误:脚本开头没声明解释器
正确:第一行必须是#!/bin/bash(或#!/usr/bin/env bash
原因:系统不知道用什么程序去运行它,可能用 sh 执行,导致语法报错。

6.4 日志没重定向 = 出错看不见

❌ 错误:脚本静默运行,失败也不留痕迹
正确:在关键命令后加>> /tmp/mylog.txt 2>&1
原因:开机阶段无终端输出,全靠日志定位问题。

6.5 桌面未加载就调用 GUI 命令

❌ 错误:在rc.local里写notify-send "Hello"
正确:GUI 相关操作一律放在gnome-session-properties或用户级脚本中
原因:rc.local运行时 X11 服务还没起来,命令直接被忽略或报错。


7. 总结:从“能跑”到“稳跑”,你已经掌握全部关键

回顾一下,我们完成了这些事:

  • 亲手验证了test.sh脚本在本地能正常运行;
  • 学会了三种互不冲突、各有所长的开机启动方案;
  • 知道了每种方案的适用边界和典型陷阱;
  • 掌握了一套通用排错思路:改路径 → 加权限 → 补头部 → 写日志 → 查时机。

你不需要记住所有命令,只需要记住一个原则:先让脚本在终端里跑通,再把它“托付”给系统。剩下的,不过是选择一个最顺手的托付方式而已。

现在,你可以合上这篇教程,打开终端,挑一种方案试试。5分钟后,当你重启电脑,看到终端一闪而过、或者/tmp/test-log.txt里出现“OK!”,那种“我搞定了”的踏实感,就是技术最本真的魅力。


获取更多AI镜像

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1203762.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电商智能修图实战:CV-UNet镜像快速实现透明背景生成

电商智能修图实战:CV-UNet镜像快速实现透明背景生成 1. 为什么电商需要自动化抠图? 你有没有遇到过这种情况:手头有上百张商品图,每一张都是白底拍摄的实物照片,现在要做详情页、上架电商平台、做社交媒体宣传&#…

2026优秀生产线厂家推荐榜单:谁在驱动智造未来?

随着“中国制造2025”战略的深入推进与工业4.0浪潮的席卷,制造业的智能化、自动化转型已不再是选择题,而是关乎企业生存与发展的必答题。一条高效、稳定、智能的生产线,成为企业提升核心竞争力、降本增效的核心装备…

YOLO11新手入门:零基础实现图像识别实战

YOLO11新手入门:零基础实现图像识别实战 你是不是也遇到过这样的情况:想用YOLO做目标检测,但一打开GitHub就看到密密麻麻的命令、配置文件和报错信息,连环境都装不起来?别急——这篇教程专为完全没接触过YOLO、没写过…

[Friends] Friends alternatives, less socially liberal.

Several prominent American television shows from the same broad period (late 1980s–1990s) were noticeably less socially liberal than Friends—either in sexual norms, moral framing, or family structure…

2026年初江苏企业团建卫衣定制服务商深度评测与选择指南

面对2026年初企业团队建设活动回归线下、文化凝聚力需求高涨的趋势,如何为团队挑选一批既彰显个性又品质可靠的定制卫衣,已成为众多江苏企业行政、HR及团队负责人的核心关切。市场上的服务商林林总总,价格、工艺、服…

看了就想试!BSHM打造透明背景大片效果

看了就想试!BSHM打造透明背景大片效果 1. 引言:一张好图,从精准抠像开始 你有没有遇到过这种情况?手头有一张特别满意的人像照片,想用它做海报、换背景或者合成创意作品,但就是卡在“抠图”这一步。手动用…

避坑指南:Ubuntu开机启动脚本常见问题全解析

避坑指南:Ubuntu开机启动脚本常见问题全解析 在Linux系统运维和自动化部署中,让程序或服务随系统启动自动运行是极为常见的需求。Ubuntu作为广泛使用的发行版之一,提供了多种实现开机自启的方式。然而,看似简单的功能背后却隐藏着…

ros2 jazzy 用c++开发服务节点,回调函数使用类非静态成员函数

以下是一个符合ROS2 Jazzy规范的C服务节点详细范例,使用类非静态成员函数作为服务回调: #include "rclcpp/rclcpp.hpp" #include "example_interfaces/srv/add_two_ints.hpp"class MinimalService : public rclcpp::Node { public:…

开箱即用有多爽?PyTorch-2.x-Universal-Dev-v1.0五分钟上手实录

开箱即用有多爽?PyTorch-2.x-Universal-Dev-v1.0五分钟上手实录 1. 为什么“开箱即用”对开发者如此重要? 你有没有经历过这样的场景:刚拿到一个新项目,满心期待地打开终端,结果光是配置环境就花了半天?p…

系统思考:商业敏感度与组织反映

商业敏感度,从来不是判断对不对,而是判断发生在第几层。 很多组织只在事件层做反应:市场变了、客户变了、对手变了。少数组织会往下看一层:是哪些结构,在持续制造这些变化? 但真正危险的,往往发…

verl容器化部署:Docker镜像制作与运行指南

verl容器化部署:Docker镜像制作与运行指南 1. verl 是什么?为什么需要容器化部署 verl 是一个灵活、高效且可用于生产环境的强化学习(RL)训练框架,专为大型语言模型(LLMs)的后训练设计。它由字…

YOLOv10官方镜像Python调用示例,快速集成API

YOLOv10官方镜像Python调用示例,快速集成API 你是否曾为部署一个目标检测模型耗费整整两天?装CUDA版本、配PyTorch、编译TensorRT、调试ONNX导出……最后发现只是因为torchvision和Pillow版本冲突?别再重复造轮子了。YOLOv10官方镜像已预装全…

截图文字识别神器:用这颗镜像快速提取屏幕内容

截图文字识别神器:用这颗镜像快速提取屏幕内容 你有没有过这样的经历:看到网页上一段关键信息,想复制却无法选中;会议截图里密密麻麻的PPT文字,手动敲一遍要十分钟;学生党截取教材图片,却卡在“…

Glyph性能优化秘籍:如何提升OCR识别准确率

Glyph性能优化秘籍:如何提升OCR识别准确率 1. 引言:为什么你需要关注Glyph的OCR表现? 你有没有遇到过这样的情况:明明输入了一整页文档,模型却漏掉关键信息?或者在处理长文本时,推理速度慢得像…

Llama3-8B能否替代GPT-3.5?指令遵循能力对比评测教程

Llama3-8B能否替代GPT-3.5?指令遵循能力对比评测教程 你是不是也经常遇到这样的问题:想部署一个轻量但靠谱的开源大模型,既要能准确理解指令、回答专业问题,又不能动辄需要A100集群?GPT-3.5效果好但闭源、不可控、成本…

呼叫中心情绪监控应用:Emotion2Vec+镜像让管理更高效

呼叫中心情绪监控应用:Emotion2Vec镜像让管理更高效 1. 为什么呼叫中心需要实时情绪监控 在客户服务一线,每一次通话都是一次信任的建立或流失。传统质检方式依赖人工抽样监听,覆盖率通常不足5%,且滞后数小时甚至数天——当投诉…

MinerU支持中文PDF吗?多语言识别效果实测报告

MinerU支持中文PDF吗?多语言识别效果实测报告 你是不是也遇到过这样的问题:手头有一份几十页的中文技术文档PDF,想把里面的内容转成可编辑的Markdown,结果试了三四个工具,不是表格错位、就是公式变成乱码、图片丢失&a…

Qwen2.5-0.5B行业应用前景:中小企业AI化实操建议

Qwen2.5-0.5B行业应用前景:中小企业AI化实操建议 1. 小模型也能大作为:为什么0.5B值得中小企业关注 你可能听说过动辄几十亿、上百亿参数的大模型,但真正适合中小企业的AI助手,未必是“越大越好”。Qwen2.5-0.5B-Instruct 这个仅…

YOLOv10无NMS设计太香了!官方镜像让部署更简单

YOLOv10无NMS设计太香了!官方镜像让部署更简单 在工业质检线上,每秒数十张PCB板图像需要被快速分析;在城市交通监控中心,成百上千路视频流要求实时处理——这些高并发、低延迟的视觉任务背后,都依赖一个核心能力&…

如何用测试镜像解决rc.local失效问题?亲测有效

如何用测试镜像解决rc.local失效问题?亲测有效 在现代 Linux 系统中,我们常常需要让某些脚本或程序在开机时自动运行。过去最简单的方法是修改 /etc/rc.local 文件,将命令写入其中即可实现开机自启。然而,从 Ubuntu 16.04 开始&a…