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

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

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星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

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

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

相关文章

全网最全专科生AI论文工具TOP9:毕业论文写作必备测评

全网最全专科生AI论文工具TOP9:毕业论文写作必备测评 2026年专科生AI论文工具测评:为何值得一看? 随着人工智能技术的不断进步,越来越多的专科生开始借助AI工具提升论文写作效率。然而,面对市场上琳琅满目的AI论文生成…

Z-Image-ComfyUI真实测评:三大模型谁更值得用

Z-Image-ComfyUI真实测评:三大模型谁更值得用 在生成式AI快速演进的今天,文生图技术已从“能画出来”迈向“画得准、出得快、改得精”的新阶段。然而,大多数开源模型仍面临响应延迟高、中文理解弱、部署复杂等现实瓶颈。阿里最新推出的 Z-Im…

Open-AutoGLM深度体验:视觉理解能力实测

Open-AutoGLM深度体验:视觉理解能力实测 1. 引言:从指令到执行的智能闭环 随着多模态大模型的发展,AI 正逐步突破“只能对话”的局限,向“能看会动”演进。Open-AutoGLM 是智谱 AI 开源的一款基于视觉语言模型(VLM&a…

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

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

基于微信小程序的四六级词汇学习平台【源码+文档+调试】

🔥🔥作者: 米罗老师 🔥🔥个人简介:混迹java圈十余年,精通Java、小程序、数据库等。 🔥🔥各类成品Java毕设 。javaweb,ssm,springboot等项目&#…

Fun-ASR常见报错解决方案:CUDA内存不足怎么办

Fun-ASR常见报错解决方案:CUDA内存不足怎么办 在使用 Fun-ASR 这类基于大模型的语音识别系统时,尤其是在本地部署并启用 GPU 加速的情况下,用户经常会遇到一个典型问题:CUDA out of memory(CUDA 内存不足)…

BAAI/bge-m3资源占用高?轻量化部署与内存优化策略

BAAI/bge-m3资源占用高?轻量化部署与内存优化策略 1. 背景与挑战:BAAI/bge-m3 的高资源消耗问题 随着大模型在语义理解、检索增强生成(RAG)等场景中的广泛应用,BAAI/bge-m3 作为当前开源领域表现最优异的多语言嵌入模…

Qwen3-Embedding-4B部署经验:生产环境常见问题解决

Qwen3-Embedding-4B部署经验:生产环境常见问题解决 1. 背景与技术选型 在当前大规模语义理解、检索增强生成(RAG)和多语言信息检索系统中,高质量的文本嵌入服务已成为核心基础设施。随着Qwen系列模型的持续演进,Qwen…

Youtu-2B文案创作实战:营销文案生成步骤详解

Youtu-2B文案创作实战:营销文案生成步骤详解 1. 引言:AI驱动的轻量级文案生成新选择 随着大语言模型在内容创作领域的广泛应用,企业对高效、低成本、可部署的AI解决方案需求日益增长。传统的大型语言模型虽然性能强大,但往往依赖…

YOLO26 改进 - 注意力机制 | DCAFE双坐标注意力:并行坐标注意力 + 双池化融合

前言 本文介绍了将双坐标注意力特征提取(DCAFE)模块与YOLO26相结合的方法。DCAFE模块采用“并行坐标注意力双池化融合”设计,通过平均池化和最大池化并行支路捕获特征,经通道自适应调整生成注意力权重,增强特征表达。…

Z-Image-Turbo快速上手:集成LangChain打造图文生成Agent

Z-Image-Turbo快速上手:集成LangChain打造图文生成Agent 1. 引言 1.1 背景与需求 随着多模态AI技术的快速发展,文生图(Text-to-Image)模型在创意设计、内容生成、广告制作等领域展现出巨大潜力。然而,许多开源模型存…

TensorFlow模型分析工具:GPU加速可视化不卡顿

TensorFlow模型分析工具:GPU加速可视化不卡顿 你有没有遇到过这种情况:训练一个大一点的深度学习模型,想用TensorBoard看看网络结构、损失曲线或者梯度分布,结果本地打开网页卡得像幻灯片?点一下刷新等十秒&#xff0…

担心黑盒模型?AI 印象派艺术工坊可解释性算法部署实战

担心黑盒模型?AI 印象派艺术工坊可解释性算法部署实战 1. 引言:为何我们需要“可解释”的图像风格迁移? 在当前人工智能广泛应用的背景下,图像风格迁移技术已从实验室走向大众应用。然而,大多数方案依赖深度神经网络…

DeepSeek-R1-Distill-Qwen-1.5B实战教程:Jupyter调用模型详细步骤

DeepSeek-R1-Distill-Qwen-1.5B实战教程:Jupyter调用模型详细步骤 1. 引言 1.1 学习目标 本文旨在为开发者提供一份完整的 DeepSeek-R1-Distill-Qwen-1.5B 模型本地部署与调用指南。通过本教程,您将掌握: 如何在本地或云端环境中加载并运…

IndexTTS-2-LLM性能瓶颈分析:CPU占用过高优化指南

IndexTTS-2-LLM性能瓶颈分析:CPU占用过高优化指南 1. 引言 1.1 场景背景与问题提出 随着大语言模型(LLM)在多模态生成领域的深入应用,语音合成技术正从传统的规则驱动向语义理解驱动演进。IndexTTS-2-LLM 作为融合 LLM 与声学建…

ArchiveMaster归档大师 v2.2.0:高效文件管理工具

ArchiveMaster 归档大师 v2.2.0 便携版是 Windows 平台热门文件管理工具,无需安装即可直接使用。它集成智能归档、批量处理、加密备份等核心功能,能高效解决文件整理繁琐、重复文件堆积等常见痛点,助力办公与日常批量文件处理更便捷高效&…

基于非合作博弈的风-光-氢微电网容量优化配置(Matlab代码实现)

👨‍🎓个人主页 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰&a…

如何提升Qwen3-1.7B响应速度?GPU加速部署实战

如何提升Qwen3-1.7B响应速度?GPU加速部署实战 1. 背景与挑战:大模型推理性能瓶颈 随着大语言模型在自然语言处理任务中的广泛应用,用户对模型响应速度的要求日益提高。Qwen3-1.7B作为通义千问系列中轻量级但功能强大的密集型语言模型&#…

2026年上海防水服务TOP5权威评测:精准治漏,守护建筑安全 - shruisheng

随着城市更新加速与极端天气频发,建筑渗漏问题已成为影响上海居民生活质量与建筑结构安全的核心隐患。面对市场上纷繁复杂的服务商,如何选择一家技术可靠、服务到位、质保有保障的专业企业,成为众多业主与项目管理方…