news 2026/4/30 20:15:32

小白也能懂的开机自启动:测试脚本保姆级教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
小白也能懂的开机自启动:测试脚本保姆级教程

小白也能懂的开机自启动:测试脚本保姆级教程

1. 为什么你需要这个教程

你是不是遇到过这样的情况:写好了一个监控脚本、一个数据采集程序,或者一个简单的自动化任务,每次重启电脑后都要手动点开终端、cd到目录、再敲一遍bash xxx.sh?太麻烦了,对吧?

更糟的是,网上搜“Ubuntu开机自启动”,出来的方案五花八门:有的要改rc.local,有的说用crontab @reboot,还有的让你去编辑.bashrc……结果试来试去,要么根本没反应,要么只在你登录后才运行,要么一重启就报错。

别折腾了。这篇教程就是为你写的——不讲原理套话,不堆专业术语,从新建一个文件开始,到看到日志里出现那行字为止,全程手把手,连路径怎么复制、命令怎么粘贴、哪里容易出错都标得清清楚楚。哪怕你第一次打开终端,也能照着做完。

它不依赖图形界面,不挑用户登录状态,不靠网络就绪,只要系统一通电、内核一加载、服务一就位,你的脚本就稳稳跑起来。而且,它用的是Ubuntu官方推荐的标准方式:systemd服务。安全、稳定、可管理,以后想停掉、查状态、看日志,一条命令全搞定。

2. 先搞懂三件事:它到底怎么工作的

2.1 它不是“开机时自动双击”

很多人下意识觉得“开机自启动”就是像Windows那样,等桌面出来后自动点开一个程序。Linux不是这样。真正的开机自启动,是在系统底层服务启动阶段,由系统本身主动拉起你的任务。它比你登录还早,甚至可能在你还没输密码前就已经在后台跑着了。

2.2 它靠一个叫“.service”的小文件指挥

你不需要动系统核心配置,也不用改任何系统文件。你只需要写一个纯文本文件,名字叫AutoRun.service,里面用几行简单英语告诉系统:“我要跑什么脚本”“以谁的身份跑”“等哪些条件满足后再跑”。系统读到这个文件,就把它当成一个正规服务来对待。

2.3 它有两个关键动作:启用 + 启动

  • systemctl enable:意思是“记住它,下次开机一定要拉它”。这一步只是登记,不立刻执行。
  • systemctl start:意思是“现在就跑一次”。这一步帮你立刻验证脚本是否真能工作,不用等重启。

这两步分开做,既安全又可控。你随时可以stopstatusrestart,就像管理一个正规软件一样。

3. 准备工作:创建测试脚本 test.sh

我们先做一个最简单的脚本,用来验证整个流程是否成功。它的作用只有一个:每次运行时,在桌面上生成或追加一行文字到test.log文件里。

3.1 打开终端,进入桌面目录

请按顺序输入以下命令(每输完一行按回车):

cd ~/Desktop

这条命令把你带到桌面文件夹。注意,~代表你自己的用户主目录,/Desktop是标准路径,不用改成/home/xxx/Desktop,直接用~/Desktop最稳妥。

3.2 创建 test.sh 文件并写入内容

输入以下命令创建文件:

nano test.sh

这时会进入一个文本编辑器界面。把下面这四行原样复制粘贴进去(注意:不要复制本行文字,只复制代码块里的内容):

#!/bin/bash # 这是一个开机自启动的测试程序。 echo "【$(date '+%Y-%m-%d %H:%M:%S')】开机自启动脚本已成功运行!" >> test.log exit 0

说明一下这几行的意思:

  • 第一行#!/bin/bash是必须的,告诉系统“用bash来执行这个文件”;
  • 第二行是注释,系统会忽略,但对你自己有提醒作用;
  • 第三行是核心:echo输出一段带时间戳的文字,并用>>追加到test.log文件末尾;
  • 第四行exit 0表示“正常结束”,让系统知道这次执行没问题。

粘贴完成后,按键盘组合键Ctrl+O(字母O,不是零),回车确认保存;再按Ctrl+X退出编辑器。

3.3 给脚本添加可执行权限

刚创建的文件默认不能直接运行,需要授权:

chmod +x test.sh

这条命令的意思是“给test.sh加上‘可以被执行’的权限”。没有它,后面所有启动都会失败。

3.4 手动运行一次,确认脚本能工作

现在我们来测试一下脚本本身有没有问题:

./test.sh

如果一切正常,终端不会报错,也不会输出任何文字(因为输出被重定向到日志了)。接着输入:

cat test.log

你应该能看到类似这样的内容:

【2024-06-15 14:22:38】开机自启动脚本已成功运行!

恭喜!你的测试脚本已经准备就绪。记住,这一步必须成功,否则后面的服务配置一定失败。

4. 核心步骤:编写并安装 AutoRun.service 服务文件

4.1 创建服务文件

回到桌面目录(如果刚才退出了终端,先执行cd ~/Desktop):

nano AutoRun.service

把下面这段内容完整复制粘贴进去(注意:路径全部使用绝对路径,且与你当前环境一致):

[Unit] Description=开机自启动测试服务 After=multi-user.target [Service] Type=simple User=$USER WorkingDirectory=/home/$USER/Desktop ExecStart=/home/$USER/Desktop/test.sh Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target

重点说明几个关键项:

  • User=$USER:自动替换成你当前登录的用户名,避免硬编码root带来的权限风险;
  • WorkingDirectoryExecStart都用了$USER变量,确保路径通用;
  • Restart=on-failure:万一脚本意外退出,系统会在10秒后自动重试,增强健壮性;
  • After=multi-user.target:表示等基础系统服务(如网络、文件系统)就绪后再启动,比network.target更稳妥。

粘贴完毕后,同样按Ctrl+O回车保存,Ctrl+X退出。

4.2 把服务文件放到系统服务目录

系统只认/etc/systemd/system/目录下的.service文件。我们需要用管理员权限复制过去:

sudo cp AutoRun.service /etc/systemd/system/

输入密码(输的时候看不到字符,这是正常现象),回车确认。

4.3 重新加载服务配置并启用开机启动

现在系统还不知道这个新服务的存在,需要刷新缓存:

sudo systemctl daemon-reload

然后告诉系统:“下次开机,请务必启动它”:

sudo systemctl enable AutoRun.service

你会看到提示:Created symlink ...,说明登记成功。

4.4 立即启动一次,验证服务是否生效

别等重启,现在就试:

sudo systemctl start AutoRun.service

再检查日志是否新增了一行:

cat test.log

你应该能看到两条记录,第二条的时间是刚刚执行的时刻。 服务已正确运行。

5. 实用技巧与常见问题排查

5.1 怎么确认服务状态?三条命令就够了

  • 查看是否正在运行:sudo systemctl status AutoRun.service
    (绿色“active (running)”表示成功)
  • 查看最近日志:sudo journalctl -u AutoRun.service -n 20 --no-pager
    (显示最后20行日志,帮你定位错误)
  • 停止服务(调试时常用):sudo systemctl stop AutoRun.service

5.2 脚本不执行?先看这三点

现象最可能原因解决方法
systemctl status显示failedExecStart路径写错,或脚本无执行权限ls -l /home/$USER/Desktop/test.sh确认有x权限;用file /home/$USER/Desktop/test.sh确认是文本文件
日志里没新增内容,但状态显示activeWorkingDirectoryExecStart路径中用了相对路径(如./test.sh必须全部用绝对路径,如/home/xxx/Desktop/test.sh
重启后没运行,但手动start可以忘了enable,或WantedBy写错了重新执行sudo systemctl enable AutoRun.service;检查[Install]段是否为WantedBy=multi-user.target

5.3 想改脚本内容?不用重装服务

你随时可以修改test.sh,比如加一行echo "额外任务",保存后,只需执行:

sudo systemctl restart AutoRun.service

服务会立即停止旧进程、拉起新脚本,无需重新enabledaemon-reload

5.4 卸载服务:两步彻底清除

如果某天你想完全移除它:

sudo systemctl disable AutoRun.service sudo rm /etc/systemd/system/AutoRun.service sudo systemctl daemon-reload

6. 进阶建议:让自启动更可靠、更实用

6.1 加个日志轮转,避免日志文件无限膨胀

test.sh开头加两行:

# 自动清理超过7天的日志 find /home/$USER/Desktop/test.log -mtime +7 -delete 2>/dev/null # 如果日志大于1MB,重命名备份 if [ -f "/home/$USER/Desktop/test.log" ] && [ $(stat -c%s "/home/$USER/Desktop/test.log" 2>/dev/null) -gt 1048576 ]; then mv "/home/$USER/Desktop/test.log" "/home/$USER/Desktop/test_$(date +%Y%m%d_%H%M%S).log" fi

6.2 让脚本支持“启动/停止/重启”参数(兼容老习惯)

修改test.shExecStart行为,让它能响应不同指令:

#!/bin/bash case "$1" in start) echo "【$(date '+%Y-%m-%d %H:%M:%S')】服务已启动" >> test.log ;; stop) echo "【$(date '+%Y-%m-%d %H:%M:%S')】服务已停止" >> test.log ;; *) echo "Usage: $0 {start|stop}" >&2 exit 1 ;; esac exit 0

对应地,AutoRun.service中的ExecStart改为:

ExecStart=/home/$USER/Desktop/test.sh start

6.3 多个脚本?一个服务管多个

不需要为每个脚本建一个service。在test.sh里用循环调用:

for script in /home/$USER/Desktop/scripts/*.sh; do if [ -x "$script" ]; then "$script" fi done

然后把所有待启动的脚本放在~/Desktop/scripts/目录下,统一管理。

7. 总结:你已经掌握的不只是一个技巧

你刚刚完成的,不是一个简单的“开机跑脚本”操作,而是掌握了Linux系统服务管理的核心逻辑:用声明式配置代替手动干预,用标准化接口替代零散技巧。这套方法适用于99%的后台任务——无论是定时采集传感器数据、自动备份重要文件、还是启动一个轻量Web服务。

更重要的是,你学会了如何验证每一步:从脚本权限、路径正确性,到服务状态、日志输出。这种“分段验证、逐层推进”的工程思维,比记住某条命令重要得多。

现在,你可以放心重启电脑了。等它再次亮起,打开桌面,双击test.log,看到那行带时间戳的记录,你就知道:你亲手部署的第一个系统级自动化服务,已经稳稳扎根在你的机器里。


获取更多AI镜像

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

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

Cloudera CDP/CDH/Hadoop 信创大模型AI时代何去何从?

Cloudera CDP/CDH 信创大模型AI时代何去何从? 下载地址: https://pan.baidu.com/s/1PDj6dySUNHotNABp7d1a0w?pwd57is 提取码: 57is 查找“Hadoop信创”,输入“CMP”恢复最新下载地址 博文末尾处有下载方式: 在信创&#xf…

作者头像 李华
网站建设 2026/5/1 6:07:34

GPEN怎么快速上手?WebUI界面操作与API调用入门指南

GPEN怎么快速上手?WebUI界面操作与API调用入门指南 你是不是也遇到过这些情况:翻出老照片想发朋友圈,结果模糊不清;客户发来一张低分辨率人像图,要求修成高清海报;或者想批量处理几十张证件照,…

作者头像 李华
网站建设 2026/5/1 9:00:27

2025年转行网络安全行业?普通人该如何选择职业方向

2025年转行网络安全行业?普通人该如何选择职业方向 人才缺口高达327万,薪资高出IT行业30%,这个黄金赛道正等你入场 在当今数字化时代,网络安全已成为国家安全和企业发展的核心关切。随着网络攻击日益复杂频繁,各行各…

作者头像 李华
网站建设 2026/5/1 5:00:11

用YOLO11做的血细胞计数项目,效果远超预期

用YOLO11做的血细胞计数项目,效果远超预期 1. 这不是又一个“跑通就行”的实验,而是真正能用的医学辅助工具 你有没有试过在显微镜下数几百个血细胞?红细胞、白细胞、血小板混在一起,视野里密密麻麻,数到一半就眼花、…

作者头像 李华
网站建设 2026/4/18 23:19:40

轻松三步,用Live Avatar生成你的第一个AI视频

轻松三步,用Live Avatar生成你的第一个AI视频 你不需要GPU集群、不需要调参经验、甚至不需要写一行代码——只要一张清晰人像、一段自然语音、一个简单描述,就能让静态照片“活”起来。Live Avatar不是概念演示,而是真正可运行的开源数字人系…

作者头像 李华
网站建设 2026/4/26 20:32:30

移动端适配进展如何?unet响应式界面改造案例

移动端适配进展如何?unet响应式界面改造案例 1. 项目背景:从桌面到指尖的卡通化体验升级 你有没有试过在手机上打开一个AI工具,结果发现按钮小得点不准、图片上传区域根本找不到、参数滑块拖不动,最后只能切回电脑继续操作&…

作者头像 李华