动手试了AutoRun.service,开机脚本效果超出预期

动手试了AutoRun.service,开机脚本效果超出预期

最近在做系统自动化测试时,遇到一个实际需求:每次开机后自动运行某个监控脚本,避免手动启动带来的遗漏和延迟。网上搜了一圈方法,有的用rc.local,有的改.bashrc,但这些方式要么不通用,要么在新版Ubuntu上失效。后来尝试了AutoRun.service方式,结果不仅成功实现开机自启,还顺带掌握了Linux服务管理的核心逻辑,效果远超预期。

整个过程其实并不复杂,关键在于理解systemd服务机制,并正确配置service文件。下面我把完整的实践过程整理出来,适合所有想在Ubuntu或其他主流Linux发行版上实现开机自启脚本的用户参考。


1. 为什么选择 AutoRun.service?

在Linux系统中,真正可靠的开机自启动方案必须通过系统级服务管理器来实现。现代Linux发行版普遍使用systemd作为初始化系统(init system),它负责启动各种后台服务、挂载文件系统、配置网络等核心任务。

这意味着,如果我们想让一个脚本在系统启动完成后自动运行,最稳妥的方式就是把它注册为一个systemd service。相比其他方法:

  • ❌ 修改.bashrc.profile:仅在用户登录时触发,不适用于无交互环境
  • ❌ 使用 crontab 的@reboot:依赖于cron服务,且执行时机不可控
  • ✅ 创建自定义.service文件:由systemd统一管理,支持依赖控制、日志记录、失败重试等高级功能

所以,AutoRun.service不只是一个脚本容器,更是一个可管理、可监控、可调试的系统组件。


2. AutoRun.service 核心配置详解

2.1 service 文件结构说明

我们创建的AutoRun.service是一个标准的systemd服务单元文件,包含三个主要部分:[Unit][Service][Install]

[Unit] Description=AutoRun-Service After=network.target
  • Description:服务描述,便于识别用途
  • After=network.target:表示该服务应在网络准备好之后再启动。如果你的脚本需要联网(比如调用API、上传数据),这一行必不可少
[Service] Type=simple User=root WorkingDirectory=/home/Ubuntu/Desktop ExecStart=/home/Ubuntu/Desktop/test.sh start
  • Type=simple:最常见的服务类型,表示主进程就是ExecStart指定的命令
  • User=root:指定以哪个用户身份运行脚本。如果是普通用户脚本,建议改为具体用户名(如 ubuntu)
  • WorkingDirectory:设置工作目录,确保脚本能找到相关资源文件
  • ExecStart:最关键的一行,指定要执行的命令。必须使用绝对路径

重要提示:所有路径都必须是绝对路径!相对路径在服务环境中无效,会导致脚本无法找到或执行失败。

[Install] WantedBy=multi-user.target
  • WantedBy=multi-user.target:表示该服务应随多用户文本模式一起启动(即正常开机状态)。这是大多数后台服务的标准配置

2.2 如何根据需求调整配置

虽然上面是一个通用模板,但在实际使用中可以根据场景灵活调整:

需求修改建议
脚本需要图形界面支持添加After=graphical-session.target并设置User=你的用户名
希望失败后自动重启[Service]中添加:
Restart=always
RestartSec=5
只需运行一次,不需要常驻Type=simple改为Type=oneshot
需要等待特定服务就绪After=后添加对应服务名,如mysql.service

例如,如果你希望脚本出错后能自动重试,可以这样写:

[Service] Type=simple User=ubuntu WorkingDirectory=/home/ubuntu/scripts ExecStart=/home/ubuntu/scripts/monitor.sh Restart=always RestartSec=10

3. 部署 AutoRun.service 的完整步骤

3.1 准备启动脚本

先创建一个简单的测试脚本test.sh,用于验证是否成功执行。

#!/bin/bash echo "【$(date)】这是一个开机自启动的测试程序。" >> /home/Ubuntu/Desktop/test.log

保存后赋予可执行权限:

chmod +x /home/Ubuntu/Desktop/test.sh

你可以在这个脚本里加入任何你想自动运行的内容,比如启动Python服务、同步数据、发送通知等。


3.2 创建并放置 service 文件

将以下内容保存为AutoRun.service文件:

[Unit] Description=AutoRun-Service After=network.target [Service] Type=simple User=root WorkingDirectory=/home/Ubuntu/Desktop ExecStart=/home/Ubuntu/Desktop/test.sh start [Install] WantedBy=multi-user.target

然后将其复制到系统的services目录下:

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

注意:路径是/etc/systemd/system/,不是/etc/systemed/system(原文档有拼写错误)。


3.3 设置权限并加载服务

sudo chmod 644 /etc/systemd/system/AutoRun.service sudo systemctl daemon-reload
  • 权限设为644是推荐做法,保证安全又可读
  • daemon-reload是必须的,告诉systemd重新扫描服务文件

3.4 启用并测试服务

启用开机自启:

sudo systemctl enable AutoRun.service

此时系统会在下次开机时自动运行该服务。

你也可以立即测试一次,无需重启:

sudo systemctl start AutoRun.service

查看运行状态和日志:

sudo systemctl status AutoRun.service journalctl -u AutoRun.service --since "1 hour ago"

如果一切正常,你应该能在桌面看到生成的test.log文件,内容类似:

【Mon Apr 5 10:23:45 CST 2025】这是一个开机自启动的测试程序。

4. 常见问题与解决方案

4.1 脚本没执行?检查这几个点

  1. 路径是否全是绝对路径?
    包括ExecStart、脚本内部引用的文件路径等,都不能用~或相对路径。

  2. 脚本是否有执行权限?
    运行ls -l your_script.sh确认权限包含x(可执行)。

  3. User 用户是否存在且正确?
    如果指定的是普通用户,确保该用户已登录过或家目录存在。

  4. 是否忘记 reload?
    每次修改.service文件后都要执行systemctl daemon-reload


4.2 日志显示“Permission denied”怎么办?

这通常是因为SELinux或AppArmor限制,或者文件权限不足。

解决方法:

  • 给脚本添加执行权限:chmod +x script.sh
  • 检查父目录权限:确保/home/xxx/Desktop对目标用户可读写
  • 若使用root运行,确认脚本本身没有敏感操作引发安全策略拦截

4.3 如何取消开机自启?

如果你不再需要这个服务,可以轻松禁用:

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

四步操作即可彻底移除。


5. 实际应用场景拓展

别以为这只是个“打印日志”的小把戏,AutoRun.service的潜力远不止于此。以下是几个真实可用的场景:

5.1 自动启动Web服务

比如你写了个Flask应用,想让它随系统启动:

[Service] Type=simple User=ubuntu WorkingDirectory=/home/ubuntu/myweb ExecStart=/usr/bin/python3 app.py Restart=always

5.2 定时备份+开机补执行

有些定时任务可能因为关机错过,可以在开机时补跑一次:

#!/bin/bash if [ ! -f "/tmp/backup_done_$(date +%Y%m%d)" ]; then python3 /home/ubuntu/scripts/backup.py touch /tmp/backup_done_$(date +%Y%m%d) fi

5.3 物联网设备自恢复

在树莓派或边缘设备上,用于检测并重启异常退出的服务:

while true; do if ! pgrep -f "sensor_reader.py" > /dev/null; then python3 /opt/sensors/sensor_reader.py & fi sleep 30 done

配合AutoRun.service,实现7x24小时稳定运行。


6. 总结

通过这次实践,我深刻体会到:掌握 systemd 服务机制,是Linux系统自动化运维的基石AutoRun.service虽然只是一个小小的配置文件,但它背后连接的是整个系统的启动流程和服务管理体系。

回顾整个过程,关键收获有三点:

  1. 可靠性高:基于systemd的服务管理比传统方法更稳定、更可控
  2. 灵活性强:可通过参数控制执行时机、用户权限、重启策略等
  3. 易于维护:支持状态查询、日志追踪、启停管理,方便排错和优化

更重要的是,这套方案适用于几乎所有现代Linux发行版——无论是Ubuntu、CentOS还是Debian,只要使用systemd,就能照搬这套流程。

现在我已经把这个模式封装成了团队内部的标准操作模板,用于部署各类自动化脚本。下次你也有类似需求时,不妨也试试AutoRun.service,相信它的表现也不会让你失望。


获取更多AI镜像

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

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

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

相关文章

终极简单!2025年最实用的微博高清图片批量下载完整教程

终极简单!2025年最实用的微博高清图片批量下载完整教程 【免费下载链接】weibo-image-spider 微博图片爬虫,极速下载、高清原图、多种命令、简单实用。 项目地址: https://gitcode.com/gh_mirrors/we/weibo-image-spider 还在为一张张手动保存微博…

YOLOE开放检测能力展示:万物皆可识别

YOLOE开放检测能力展示:万物皆可识别 在城市交通监控中心,摄像头捕捉到一辆从未见过的新型电动车闯红灯;在野生动物保护区,红外相机拍下了一种罕见鸟类的身影;在工业质检线上,一台设备突然出现了一个此前未…

测试开机启动脚本镜像部署全记录,新手可复制

测试开机启动脚本镜像部署全记录,新手可复制 1. 前言:为什么需要开机自启脚本? 你有没有遇到过这样的情况:每次重启设备后,都要手动运行一堆服务、脚本或环境配置?比如启动一个监控程序、挂载网络存储、或…

Joy-Con Toolkit免费终极指南:轻松解决手柄问题的完整方案

Joy-Con Toolkit免费终极指南:轻松解决手柄问题的完整方案 【免费下载链接】jc_toolkit Joy-Con Toolkit 项目地址: https://gitcode.com/gh_mirrors/jc/jc_toolkit 还在为Switch手柄的各种使用问题而烦恼吗?Joy-Con Toolkit这款完全免费的开源工…

如何快速迁移输入法词库:深蓝转换工具完整指南

如何快速迁移输入法词库:深蓝转换工具完整指南 【免费下载链接】imewlconverter ”深蓝词库转换“ 一款开源免费的输入法词库转换程序 项目地址: https://gitcode.com/gh_mirrors/im/imewlconverter 还在为更换输入法时无法保留个人词库而烦恼吗?…

MGeo镜像部署常见问题汇总:单卡4090D运行报错解决方案

MGeo镜像部署常见问题汇总:单卡4090D运行报错解决方案 1. 背景与使用场景 MGeo是阿里开源的一款专注于中文地址领域实体对齐的模型,主要用于解决“地址相似度匹配”这一实际业务难题。在电商、物流、本地生活等场景中,常常需要判断两条地址…

YOLOv9 Docker部署:容器化封装最佳实践

YOLOv9 Docker部署:容器化封装最佳实践 在深度学习模型的开发与部署过程中,环境配置常常成为效率瓶颈。YOLOv9作为当前目标检测领域表现优异的模型之一,其依赖复杂、安装繁琐的问题尤为突出。为解决这一痛点,我们推出了基于官方代…

猫抓插件使用指南:5分钟掌握网页资源下载技巧

猫抓插件使用指南:5分钟掌握网页资源下载技巧 【免费下载链接】cat-catch 猫抓 chrome资源嗅探扩展 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为无法保存网页视频而烦恼吗?每次看到精彩的在线内容,却只能望洋…

突破Windows远程桌面限制:RDP Wrapper完全配置指南

突破Windows远程桌面限制:RDP Wrapper完全配置指南 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap 你是否曾经因为Windows系统的远程桌面功能限制而感到困扰?特别是当家庭版或专业版系统只允…

小红书数据采集完整指南:从零开始掌握Python爬虫工具

小红书数据采集完整指南:从零开始掌握Python爬虫工具 【免费下载链接】xhs 基于小红书 Web 端进行的请求封装。https://reajason.github.io/xhs/ 项目地址: https://gitcode.com/gh_mirrors/xh/xhs 想要高效获取小红书平台的公开数据资源吗?xhs这…

3大惊艳功能解密:Cowabunga Lite如何让iOS个性化定制变得如此轻松

3大惊艳功能解密:Cowabunga Lite如何让iOS个性化定制变得如此轻松 【免费下载链接】CowabungaLite iOS 15 Customization Toolbox 项目地址: https://gitcode.com/gh_mirrors/co/CowabungaLite 还在为iPhone界面千篇一律而烦恼吗?想打造真正属于自…

Z-Image-ComfyUI快速上手:三步完成首张AI图像生成

Z-Image-ComfyUI快速上手:三步完成首张AI图像生成 Z-Image-ComfyUI 是一个集成了阿里最新开源文生图大模型 Z-Image 的可视化推理环境,基于 ComfyUI 搭建,专为高效图像生成设计。它将强大的生成能力与直观的操作界面结合,让开发者…

工业质检实战:用YOLOv10镜像快速搭建缺陷检测系统

工业质检实战:用YOLOv10镜像快速搭建缺陷检测系统 在现代智能制造场景中,产品质量控制正从传统人工目检向自动化视觉检测加速转型。尤其是在PCB板、金属件、玻璃面板等高精度制造领域,微小划痕、焊点虚焊、元件错位等缺陷往往肉眼难辨&#…

小红书数据采集完整指南:如何快速上手Python爬虫工具

小红书数据采集完整指南:如何快速上手Python爬虫工具 【免费下载链接】xhs 基于小红书 Web 端进行的请求封装。https://reajason.github.io/xhs/ 项目地址: https://gitcode.com/gh_mirrors/xh/xhs 想要高效获取小红书平台的公开数据吗?xhs这款强…

Open-AutoGLM远程开发指南:跨网络设备控制实战

Open-AutoGLM远程开发指南:跨网络设备控制实战 1. Open-AutoGLM:手机端AI Agent的全新打开方式 你有没有想过,让AI直接帮你操作手机?不是简单的语音助手,而是真正“看得懂”屏幕、“想得清楚”下一步、“动得了手”完…

中小企业AI落地:Glyph低成本视觉推理部署案例

中小企业AI落地:Glyph低成本视觉推理部署案例 在当前人工智能技术快速发展的背景下,越来越多的中小企业开始关注如何将大模型技术真正“用起来”。然而,高昂的算力成本、复杂的部署流程以及对专业团队的依赖,常常让这些企业望而却…

小红书下载神器:3分钟掌握免费无水印批量下载技巧

小红书下载神器:3分钟掌握免费无水印批量下载技巧 【免费下载链接】XHS-Downloader 免费;轻量;开源,基于 AIOHTTP 模块实现的小红书图文/视频作品采集工具 项目地址: https://gitcode.com/gh_mirrors/xh/XHS-Downloader 想…

RDP Wrapper完整教程:免费解锁Windows多用户远程桌面

RDP Wrapper完整教程:免费解锁Windows多用户远程桌面 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap 还在为Windows系统只能单用户远程连接而苦恼吗?RDP Wrapper Library为你提供了完美的解…

cv_resnet18_ocr-detection启动失败?服务排查步骤详解

cv_resnet18_ocr-detection启动失败?服务排查步骤详解 1. 问题背景与常见现象 你是不是也遇到过这样的情况:刚部署完 cv_resnet18_ocr-detection OCR文字检测模型,满怀期待地运行 bash start_app.sh,结果服务没起来,…

如何轻松解锁付费内容:7个高效工具的完整指南

如何轻松解锁付费内容:7个高效工具的完整指南 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 你是否经常遇到这样的情况:找到一篇很有价值的技术文章&#xff…