2026/2/14 15:07:04
网站建设
项目流程
南昌互联网网站开发,搭建公司,系统管理员权限怎么开,余杭住房和城乡建设局网站新手必看#xff1a;如何让脚本随系统自动运行#xff1f;超详细教程
1. 引言
在实际的开发和运维场景中#xff0c;我们常常需要让某些关键任务或服务在系统启动时自动运行#xff0c;比如模型推理服务、数据采集脚本、监控程序等。对于刚接触 Linux 系统管理的新手来说…新手必看如何让脚本随系统自动运行超详细教程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] DescriptionRun my custom script at startup Afternetwork.target [Service] Typesimple Usertest Grouptest 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 Restartalways RestartSec5 [Install] WantedBymulti-user.target参数说明字段说明Description服务描述信息Afternetwork.target表示在网络服务启动后运行User/Group指定运行用户避免权限问题ExecStartPre启动前执行命令用于激活 Conda 环境ExecStart主要执行命令WorkingDirectory设置工作目录防止路径错误Restartalways崩溃后自动重启WantedBymulti-user.target表示多用户模式下启用2.3 启用并启动服务刷新 systemd 配置sudo systemctl daemon-reload启用开机自启sudo systemctl enable my_script.service立即启动服务sudo systemctl start my_script.service2.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.sh3.2 配置 Crontab 自启任务编辑当前用户的 crontabcrontab -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查看完整日志需手动重定向日志到文件权限控制可指定运行用户、组、环境变量默认以当前用户身份运行自动重启支持崩溃后自动重启Restartalways仅执行一次失败不重试适用场景生产环境服务、长期运行进程轻量级脚本、一次性初始化任务建议对于 AI 推理、Web 服务等关键应用优先选择Systemd对于简单初始化脚本可用Crontab快速实现。4. 常见问题与解决方案4.1 Conda 环境无法激活现象CommandNotFoundError: No such command: conda原因Shell 环境未加载 Conda 初始化脚本。解决方法在脚本中显式 sourcesource /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. 总结本文详细介绍了两种让脚本随系统自动运行的核心方法Systemd 服务方式适用于生产级服务部署支持精细控制、自动重启和集中日志管理是推荐的工业标准做法。Crontab reboot 方式配置简单适合轻量级任务或用户级自启需求但缺乏进程监控能力。无论选择哪种方式关键点在于使用绝对路径正确激活 Conda 环境设置合理的用户权限添加日志输出以便调试掌握这些技能后你已经具备了将任何脚本Python、Shell、Node.js 等部署为开机自启服务的能力为后续构建自动化系统打下坚实基础。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。