2026/5/21 21:32:52
网站建设
项目流程
网站设计推广,前端怎么做自己的博客网站,苏州做门户网站的公司,升降机网站怎么做学生党也能懂#xff1a;Linux自启动原来是这样玩的
你是不是也遇到过这样的问题#xff1a;写好了一个Python小工具#xff0c;想让它开机就自动跑起来#xff0c;结果一搜“Linux开机启动”#xff0c;满屏都是systemd、cron、rc.local这些词#xff0c;看得头大#…学生党也能懂Linux自启动原来是这样玩的你是不是也遇到过这样的问题写好了一个Python小工具想让它开机就自动跑起来结果一搜“Linux开机启动”满屏都是systemd、cron、rc.local这些词看得头大别急今天这篇就是专门写给学生党的——不讲原理堆砌不甩专业黑话只用你能听懂的大白话手把手带你把脚本稳稳当当地“塞进”开机流程里。哪怕你刚装完Ubuntu、连终端都还敲得不太顺照着做15分钟搞定。我们用的不是抽象概念而是真实镜像环境测试开机启动脚本。它已经预装了基础工具、用户权限和测试路径比如/home/test/stu_zx/2/ultralytics-main/所有操作都在这个干净、可控的环境中验证过。你不用猜路径、不用怕删错系统文件每一步都有明确反馈错了也能立刻回退。下面要讲的两种方法不是“教科书标准答案”而是真实场景中学生最常用、最容易踩坑、也最容易修好的两条路。一条偏“正规军”systemd服务适合长期稳定运行另一条偏“轻骑兵”crontab reboot适合快速验证、临时调试。咱们不选最难的只选最适合你的。1. 方法一用 systemd 服务 —— 稳、准、有面子很多教程一上来就让你改/etc/rc.local但 Ubuntu 20.04 默认已禁用它强行启用反而容易出问题。而systemd是现在 Linux 的“官方管家”它管启动、管日志、管重启学生党用它不是为了炫技而是因为它报错清楚、启停方便、出了问题一眼就能看出哪卡住了。1.1 先搞懂一个关键点为什么脚本直接跑不了你写的 Python 脚本很可能依赖 Anaconda 环境里的 PyTorch 或其他包。但开机时系统是“裸奔”状态——它不认识conda activate也不加载你的.bashrc。所以不是脚本写错了是环境没带齐。就像你让快递员送蛋糕上门却忘了告诉他蛋糕在哪个冰箱里。所以我们的核心动作就两个先“打开冰箱”激活 conda 环境再“取蛋糕、送出去”运行你的程序1.2 创建服务文件三步到位打开终端执行sudo nano /etc/systemd/system/my_start.service粘贴以下内容注意全部复制不要漏行[Unit] Description学生党专用开机启动服务 Afternetwork.target [Service] Typesimple Usertest WorkingDirectory/home/test/stu_zx/2/ultralytics-main ExecStartPre/bin/bash -c source /home/test/anaconda3/bin/activate pytorch_env echo PyTorch环境已激活 ExecStart/home/test/stu_zx/2/ultralytics-main/dist/4 Restarton-failure RestartSec10 [Install] WantedBymulti-user.target逐行解释人话版Usertest告诉系统“用 test 这个普通用户身份运行”绝不加 sudo更不碰 root安全第一。WorkingDirectory指定脚本的工作目录避免因路径错误找不到配置文件或数据。ExecStartPre开机时先执行这句——激活环境并打印一句提示方便你后面查日志。ExecStart这才是真正要跑的程序就是镜像里那个dist/4可执行文件。Restarton-failure如果程序意外退出比如报错崩溃系统会等10秒自动重试不用你手动去敲命令。重要提醒如果你的 conda 安装路径或环境名不同请按实际修改source /home/test/anaconda3/bin/activate pytorch_env→ 改成你自己的路径和环境名比如py39或ml-env不确定在终端里输入conda env list就能看到所有环境名。1.3 启用并验证三行命令走完保存退出CtrlO → Enter → CtrlX然后依次执行sudo systemctl daemon-reload sudo systemctl enable my_start.service sudo systemctl start my_start.service第一行让系统“刷新菜单”知道新来了个服务。第二行“登记备案”表示“下次开机请带上它”。第三行立刻启动一次不用重启马上看效果。检查是否成功敲这一句sudo systemctl status my_start.service看到绿色的active (running)并且最后一行显示Started 学生党专用开机启动服务就说明它已经在后台安静工作了。如果显示failed别慌往下翻几行看红色报错文字——90%的问题都能从这里直接定位。2. 方法二用 crontab reboot —— 快、简、适合调试如果你只是想快速验证“我的脚本能开机跑吗”或者正在调一个临时脚本不想动系统级服务文件那crontab就是你的最佳拍档。它就像手机里的“定时闹钟”你设好“开机时响一次”它就准时执行不占资源、不改配置、删起来也特别利索。2.1 写一个“带环境的启动脚本”先创建一个中间脚本把环境激活和主程序打包在一起nano ~/start_my_tool.sh填入内容#!/bin/bash # 切换到项目目录可选但推荐 cd /home/test/stu_zx/2/ultralytics-main # 激活 conda 环境关键 source /home/test/anaconda3/bin/activate pytorch_env # 运行你的程序 /home/test/stu_zx/2/ultralytics-main/dist/4 # 可选加一句日志方便排查 echo $(date): 工具已启动 /home/test/start_log.txt保存退出后必须加执行权限否则 cron 会直接忽略它chmod x ~/start_my_tool.sh小技巧最后一行日志能帮你确认脚本到底有没有被执行。重启后cat ~/start_log.txt就能看到时间戳。2.2 把它“挂”到开机闹钟上执行crontab -e在文件最底部新增一行注意是英文符号空格不能少reboot /home/test/start_my_tool.sh保存退出。搞定。注意crontab里的路径必须写绝对路径以/开头~和$HOME在这里都不认。所以/home/test/start_my_tool.sh不能写成~/start_my_tool.sh。2.3 测试它是否真有效别急着重启先手动模拟一次/home/test/start_my_tool.sh如果终端没报错、程序正常跑起来了说明脚本本身没问题。再检查日志cat ~/start_log.txt有时间戳就说明 cron 已经能正确调用它了。3. 常见问题快查表学生党高频踩坑现场刚上手时90%的问题都集中在这几个地方。对照自查省下半小时百度时间。现象最可能原因一句话解决systemctl status显示failed报错Command not foundExecStartPre或ExecStart路径写错了或 conda 路径不对用ls -l /home/test/anaconda3/bin/activate确认路径存在用which python看默认 Python 是不是 conda 里的crontab不执行日志文件没生成脚本没加chmod x或路径用了~ls -l ~/start_my_tool.sh看权限里有没有x把~全改成/home/test/程序启动了但功能异常比如找不到模型文件WorkingDirectory没设或脚本里用了相对路径在 service 文件里加上WorkingDirectory或在启动脚本开头加cd /xxx想取消开机启动但不知道怎么删两种方法混用了自己都记不清systemdsudo systemctl disable my_start.servicecrontabcrontab -e删除那一行终极心法所有路径先用ls确认存在再写进配置所有命令先在终端手动敲一遍确保能跑通再放进自动流程出问题第一反应不是重装而是看日志systemctl status和cat ~/start_log.txt是你的两大法宝。4. 两种方法怎么选一张表说清本质维度systemd 服务crontab reboot适合谁想长期稳定运行、需要自动重启、希望统一管理的服务比如监控脚本、API服务快速验证、临时任务、个人小工具、不想动系统配置学习成本略高要理解 Unit/Service/Install 三段极低就记住reboot这四个字母排错难度低systemctl status直接显示错误行中需手动加日志或查syslog权限控制强可指定 User/Group隔离安全弱默认用当前用户但无法细粒度控制学生党建议做课程设计、毕设部署、想练工程规范首选它第一次尝试、调试阶段、懒得配服务选它没有“最好”只有“最适合你现在的需求”。今天先用 crontab 跑通明天再迁移到 systemd完全没问题。5. 总结你已经掌握了 Linux 自启动的核心逻辑回过头看所谓“开机自启动”根本不是什么神秘黑科技。它就干一件事在系统启动完成后的某个时刻用某个身份执行某段命令。systemd是把它做成一份“正式工合同”有岗位、有职责、有考勤crontab reboot是贴在门上的便利贴“老板开门时记得做这事”。你不需要背熟所有参数只要记住三个关键词环境conda 激活不能少路径全用绝对路径~是隐形杀手验证先手动跑再加自动最后看日志现在你的那个dist/4程序已经可以每天清晨安静地醒来开始为你工作了。这不是魔法是你亲手搭建的第一座自动化小桥——往后无论是部署 Flask 服务、跑定时数据清洗还是让树莓派一开机就开摄像头底层逻辑都是一样的。下一步试试把日志自动清理、加个微信通知提醒或者用systemctl控制多个服务联动。你已经站在了自动化世界的门口门其实一直开着。--- **获取更多AI镜像** 想探索更多AI镜像和应用场景访问 [CSDN星图镜像广场](https://ai.csdn.net/?utm_sourcemirror_blog_end)提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。