news 2026/6/3 9:35:13

新手必看:如何让脚本随系统自动运行?超详细教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
新手必看:如何让脚本随系统自动运行?超详细教程

新手必看:如何让脚本随系统自动运行?超详细教程

1. 引言

在实际的开发和运维场景中,我们常常需要让某些关键任务或服务在系统启动时自动运行,比如模型推理服务、数据采集脚本、监控程序等。对于刚接触 Linux 系统管理的新手来说,实现“开机自启”可能显得有些神秘。本文将带你从零开始,手把手掌握两种主流且稳定的方法:Systemd 服务方式Crontab @reboot 方式,确保你的脚本能够可靠地随系统启动而自动执行。

通过本教程,你将学会:

  • 如何创建可执行的服务脚本
  • 使用 Systemd 实现专业级开机启动
  • 利用 Crontab 快速配置用户级自启任务
  • 验证服务状态与排查常见问题

无论你是部署 AI 模型、自动化工具还是后台服务,这套方法都完全适用。


2. 方法一:使用 Systemd 创建系统服务(推荐)

Systemd 是现代 Linux 发行版的标准初始化系统和服务管理器,具备强大的依赖控制、日志追踪和自动重启能力,是实现开机自启最推荐的方式。

2.1 创建可执行脚本

首先,确保你要启动的脚本具有可执行权限。以一个 Python 脚本为例:

#!/bin/bash # 脚本路径:/home/test/stu_zx/2/ultralytics-main/start_model.py python /home/test/stu_zx/2/ultralytics-main/start_model.py

赋予执行权限:

chmod +x /home/test/stu_zx/2/ultralytics-main/start_model.py

注意:如果脚本依赖特定 Conda 环境(如pytorch_env),需在服务中显式激活环境。

2.2 编写 Systemd 服务文件

创建服务配置文件:

sudo nano /etc/systemd/system/my_script.service

写入以下内容:

[Unit] Description=Run my custom script at startup After=network.target [Service] Type=simple User=test Group=test ExecStartPre=/bin/bash -c 'source /home/test/anaconda3/bin/activate pytorch_env' ExecStart=/usr/bin/python /home/test/stu_zx/2/ultralytics-main/start_model.py WorkingDirectory=/home/test/stu_zx/2/ultralytics-main Restart=always RestartSec=5 [Install] WantedBy=multi-user.target
参数说明:
字段说明
Description服务描述信息
After=network.target表示在网络服务启动后运行
User/Group指定运行用户,避免权限问题
ExecStartPre启动前执行命令,用于激活 Conda 环境
ExecStart主要执行命令
WorkingDirectory设置工作目录,防止路径错误
Restart=always崩溃后自动重启
WantedBy=multi-user.target表示多用户模式下启用

2.3 启用并启动服务

刷新 systemd 配置:

sudo systemctl daemon-reload

启用开机自启:

sudo systemctl enable my_script.service

立即启动服务:

sudo systemctl start my_script.service

2.4 查看服务状态

检查是否正常运行:

sudo systemctl status my_script.service

输出示例:

● my_script.service - Run my custom script at startup Loaded: loaded (/etc/systemd/system/my_script.service; enabled) Active: active (running) since Mon 2025-04-05 10:00:00 CST; 5s ago Main PID: 1234 (python) Tasks: 1 Memory: 80.0M CGroup: /system.slice/my_script.service └─1234 /home/test/anaconda3/envs/pytorch_env/bin/python /home/test/stu_zx/2/ultralytics-main/start_model.py

若显示active (running),则表示服务已成功启动。

2.5 测试开机自启效果

重启系统验证:

sudo reboot

系统重启后,再次运行systemctl status my_script.service,确认服务自动启动。


3. 方法二:使用 Crontab 的 @reboot 触发器

Crontab 是 Linux 的定时任务工具,除了周期性任务外,还支持@reboot特殊标记,表示仅在系统启动时执行一次,适合轻量级脚本自启。

3.1 创建启动脚本

新建一个 Shell 脚本用于封装环境加载和程序调用:

nano ~/start_pytorch.sh

内容如下:

#!/bin/bash # 激活 Conda 环境并运行 Python 脚本 source /home/test/anaconda3/etc/profile.d/conda.sh conda activate pytorch_env python /home/test/stu_zx/2/ultralytics-main/1.py

说明:使用conda activate前必须先 sourceconda.sh,否则会报 command not found。

保存后添加执行权限:

chmod +x ~/start_pytorch.sh

3.2 配置 Crontab 自启任务

编辑当前用户的 crontab:

crontab -e

在文件末尾添加:

@reboot /home/test/start_pytorch.sh

注意:路径必须为绝对路径,不能使用~

保存退出后,Crontab 会在下次系统启动时自动执行该脚本。

3.3 验证 Crontab 是否生效

你可以通过查看系统日志来确认任务是否触发:

grep CRON /var/log/syslog | tail -n 10

如果看到类似以下输出,说明已触发:

Apr 5 10:05:01 ubuntu CRON[1234]: (test) CMD (/home/test/start_pytorch.sh)

3.4 两种方法对比分析

对比维度SystemdCrontab @reboot
执行时机系统初始化阶段可控(可设依赖)开机后尽早执行,但无精确顺序控制
日志管理支持journalctl查看完整日志需手动重定向日志到文件
权限控制可指定运行用户、组、环境变量默认以当前用户身份运行
自动重启支持崩溃后自动重启(Restart=always)仅执行一次,失败不重试
适用场景生产环境服务、长期运行进程轻量级脚本、一次性初始化任务

建议:对于 AI 推理、Web 服务等关键应用,优先选择Systemd;对于简单初始化脚本,可用Crontab快速实现。


4. 常见问题与解决方案

4.1 Conda 环境无法激活

现象CommandNotFoundError: No such command: conda

原因:Shell 环境未加载 Conda 初始化脚本。

解决方法

在脚本中显式 source:

source /home/test/anaconda3/etc/profile.d/conda.sh

或使用完整路径调用解释器:

/home/test/anaconda3/envs/pytorch_env/bin/python your_script.py

后者更稳定,推荐用于生产环境。

4.2 脚本路径错误导致启动失败

建议:所有路径使用绝对路径,避免相对路径引发问题。

可在脚本开头添加调试信息:

echo "[$(date)] Starting script..." >> /tmp/startup.log

便于排查执行流程。

4.3 权限不足问题

确保:

  • 脚本有执行权限:chmod +x script.py
  • 目标用户对脚本路径有读取权限
  • 若涉及网络端口(如 80/443),考虑使用sudo或 Capabilities 提权

4.4 如何查看启动日志?

使用 journalctl 查看 Systemd 服务日志:

sudo journalctl -u my_script.service -f

实时跟踪日志输出,快速定位异常。


5. 总结

5. 总结

本文详细介绍了两种让脚本随系统自动运行的核心方法:

  1. Systemd 服务方式:适用于生产级服务部署,支持精细控制、自动重启和集中日志管理,是推荐的工业标准做法。
  2. Crontab @reboot 方式:配置简单,适合轻量级任务或用户级自启需求,但缺乏进程监控能力。

无论选择哪种方式,关键点在于:

  • 使用绝对路径
  • 正确激活 Conda 环境
  • 设置合理的用户权限
  • 添加日志输出以便调试

掌握这些技能后,你已经具备了将任何脚本(Python、Shell、Node.js 等)部署为开机自启服务的能力,为后续构建自动化系统打下坚实基础。


获取更多AI镜像

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

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

DeepSeek-R1-Distill-Qwen-1.5B性能瓶颈?GPU利用率提升策略

DeepSeek-R1-Distill-Qwen-1.5B性能瓶颈?GPU利用率提升策略 1. 引言:模型部署中的性能挑战 在当前大模型推理服务的工程实践中,尽管模型能力日益强大,但实际部署过程中常面临GPU利用率低、响应延迟高、吞吐量不足等性能瓶颈。本…

作者头像 李华
网站建设 2026/5/31 15:16:29

基于Modbus的RS485通信系统学习

深入理解工业通信基石:Modbus RTU over RS485 的实战解析在现代工业自动化系统中,设备之间的稳定通信是实现数据采集、远程控制和智能决策的基础。尽管以太网与无线技术日益普及,但在现场层(Field Level),R…

作者头像 李华
网站建设 2026/5/21 0:08:58

学霸同款2026 AI论文工具TOP8:本科生毕业论文神器测评

学霸同款2026 AI论文工具TOP8:本科生毕业论文神器测评 2026年学术写作工具测评:为什么需要一份权威榜单? 随着AI技术在学术领域的深入应用,越来越多的本科生开始依赖智能写作工具来提升论文效率与质量。然而,面对市场上…

作者头像 李华
网站建设 2026/5/26 21:42:56

ssm488图书销售管理入库信息系统9f27q--论文

目录具体实现截图摘要系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 摘要 随着信息技术的快速发展,图书销售管理系统的信息化已成为提高企业运营效率的重要手段。本研究基于SSM&…

作者头像 李华
网站建设 2026/5/29 22:39:35

ssm492网上旧书回收二手书店销售管理系统--论文

目录具体实现截图摘要系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 摘要 随着互联网技术的快速发展,二手书交易市场逐渐成为图书循环利用的重要途径。传统的线下二手书交易模式存在…

作者头像 李华
网站建设 2026/5/11 7:13:48

ssm494校园旧书交易交换平台论文

目录具体实现截图摘要系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 摘要 随着高校教育的发展,学生每年产生大量闲置教材和书籍,传统线下交易方式效率低、信息不对称&am…

作者头像 李华