2026/6/28 0:35:08
网站建设
项目流程
专业建站流程,怎么做网站计划,做园区门户网站的需求分析,yole市场调研公司测试开机启动脚本保姆级教程#xff0c;小白也能一次成功
你是不是也遇到过这样的问题#xff1a;写好了测试脚本#xff0c;想让它开机自动运行#xff0c;结果试了几次都失败#xff1f;终端没弹出来、脚本没执行、甚至系统启动变慢……别急#xff0c;这不是你的问题…测试开机启动脚本保姆级教程小白也能一次成功你是不是也遇到过这样的问题写好了测试脚本想让它开机自动运行结果试了几次都失败终端没弹出来、脚本没执行、甚至系统启动变慢……别急这不是你的问题而是Linux开机自启机制本身就有多个入口选错方法就容易踩坑。这篇教程不讲抽象概念不堆参数说明只聚焦一件事让你的test.sh在Ubuntu开机时稳稳当当地跑起来而且是桌面环境就绪后才执行。全程用大白话真实命令关键提醒连Linux新手也能照着操作一次成功。我们不搞“理论上可行”只讲“实测能用”的方案。下面这三种方法我都亲自在Ubuntu 22.04桌面版上反复验证过每一步都标注了为什么这么写、哪里最容易出错、出错了怎么快速排查。1. 最稳妥用 GNOME 启动应用程序管理器推荐新手首选这是对新手最友好的方式——它不碰系统级配置不改权限不涉及运行级别所有操作都在图形界面里完成失败了删掉重来也不影响系统。1.1 先确认脚本能手动运行别跳过这步很多失败其实卡在脚本本身。打开终端执行bash /home/Desktop/test.sh你应该看到类似这样的输出file1.txt file2.jpg OK!如果报错No such file or directory或Permission denied请先检查两点脚本路径是否正确注意/home/Desktop/中的Desktop首字母是大写且用户名要替换成你自己的比如/home/yourname/Desktop/脚本是否有执行权限运行chmod x /home/Desktop/test.sh补上确认能手动运行再继续下一步。1.2 添加到“启动应用程序”Ubuntu 桌面自带一个叫“启动应用程序”的工具专门管开机自动运行的程序。在终端中输入gnome-session-properties或者直接在应用菜单搜索“启动应用程序”并打开。点击左下角的添加按钮填写三项字段填写内容说明名称测试脚本随便起个好记的名字不影响功能命令gnome-terminal -- bash -c cd /home/Desktop ./test.sh; exec bash关键见下方详解注释运行桌面测试脚本可选方便以后识别注意命令栏里一定要写完整不能只写./test.sh也不能漏掉exec bash。为什么这样写gnome-terminal --强制新开一个终端窗口否则脚本后台静默执行你看不到输出bash -c ...让终端执行一串命令而不是只运行一个文件cd /home/Desktop ./test.sh先进入脚本所在目录再执行避免路径错误; exec bash让终端执行完脚本后不自动关闭停在终端界面方便你看到OK!输出填完点添加然后重启电脑试试。你会看到登录进桌面后自动弹出一个终端窗口执行完ls列出文件最后显示OK!然后终端保持打开状态。成功标志终端弹出 有输出 不闪退。1.3 常见问题速查终端没弹出来检查是否开启了“自动登录”。进入“设置 → 用户 → 自动登录”开启它。GNOME 启动管理器依赖用户会话未登录时不会触发。弹出终端但没执行脚本打开“启动应用程序”双击刚添加的条目检查“命令”字段有没有被意外修改或截断。终端一闪而过一定是漏了exec bash。加上它终端就不会执行完就关了。2. 最通用rc.local 方案适合需要系统级启动的场景如果你的脚本不需要图形界面比如只是备份日志、检测硬件状态或者你想让它在登录前就运行那rc.local是更底层、更通用的选择。但注意Ubuntu 22.04 默认禁用了 rc.local 服务必须手动启用否则写了也白写。2.1 启用 rc.local 服务先创建文件如果不存在sudo nano /etc/rc.local粘贴以下内容注意保留#!/bin/sh -e和exit 0#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will exit 0 on success or any other # value on error. # Print the IP address # _IP$(hostname -I) || true # if [ $_IP ]; then # printf My IP address is %s\n $_IP # fi # 在这里添加你的命令注意路径必须绝对不能用 ~ cd /home/Desktop ./test.sh exit 0保存退出CtrlO → Enter → CtrlX。然后给它执行权限sudo chmod x /etc/rc.local最后启用服务sudo systemctl enable rc-local sudo systemctl start rc-local检查是否启用成功systemctl status rc-local如果看到active (exited)说明已启用如果报failed常见原因是/etc/rc.local文件里有语法错误或路径写错了比如用了~/Desktop而不是/home/yourname/Desktop。2.2 重要提醒rc.local 的执行时机rc.local是在系统初始化完成、但用户还没登录时运行的。这意味着❌ 它看不到你的桌面环境没有$DISPLAY变量❌ 无法直接调用gnome-terminal、nautilus等图形程序❌ 如果脚本里有ls这种命令它会执行但你看不到输出因为没终端所以如果你的test.sh只是打印OK!用rc.local是没问题的但如果你想看到终端弹窗、或者脚本依赖图形界面比如打开浏览器、调用 GUI 工具那就不要选这个方案。适合场景后台服务、定时任务准备、硬件检测、日志清理等无界面任务。3. 最传统/etc/init.d update-rc.d了解即可新手慎用这是 Debian/Ubuntu 早期的经典方式现在官方已不推荐但很多老教程还在用。它的逻辑是把脚本放进系统服务目录再用update-rc.d注册为“系统服务”。它的问题很明确太重、太绕、容易和 systemd 冲突且对桌面脚本支持差。不过既然你看到了我们就把它说透避免你被网上过时教程带偏。3.1 正确写法不是简单复制粘贴首先/etc/init.d/下的脚本不是普通 shell 脚本它必须符合 LSBLinux Standard Base规范包含标准头和start/stop函数。你的test.sh不能直接扔进去。得改写成这样#!/bin/sh ### BEGIN INIT INFO # Provides: test-script # Required-Start: $local_fs $network # Required-Stop: $local_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Run test script at boot # Description: This service runs /home/Desktop/test.sh at system startup. ### END INIT INFO case $1 in start) echo Starting test script... cd /home/Desktop ./test.sh ;; stop) echo Stopping test script... ;; *) echo Usage: $0 {start|stop} exit 1 ;; esac exit 0保存为/etc/init.d/test-script注意名字不要带.sh然后sudo chmod x /etc/init.d/test-script sudo update-rc.d test-script defaults3.2 为什么新手不推荐你写的脚本必须严格遵循 init.d 规范少一行注释头都可能注册失败update-rc.d的defaults参数在新版 Ubuntu 上实际效果不稳定常被 systemd 忽略即使注册成功它也是在系统启动早期运行同样看不到桌面、打不开终端排查困难日志分散在/var/log/syslog里新手很难定位仅建议你正在维护一个老旧服务器或需要和传统 init 系统兼容时使用。4. 三个方案对比与选择指南光看文字可能还是拿不准该选哪个我们用一张表帮你一眼看清区别对比项GNOME 启动应用程序rc.local/etc/init.d适用人群新手首选完全图形化有一定Linux基础❌ 不推荐新手是否需要图形界面必须登录后才运行❌ 无界面登录前运行❌ 无界面登录前运行能否看到脚本输出终端弹窗清晰可见❌ 后台运行无输出❌ 后台运行无输出配置难度点几下鼠标敲一条命令需启用服务注意路径❌ 需改写脚本理解init规范失败风险极低删掉重来即可权限/路径错误易导致启动慢❌ 配置错误可能导致系统启动卡住推荐场景桌面脚本、调试脚本、需要反馈的脚本后台任务、系统检测、无需交互的任务老旧系统维护、兼容性要求高的环境一句话决策建议你想开机后看到终端跑脚本 → 选第1种GNOME你想脚本在后台默默干活不打扰你 → 选第2种rc.local你不是在维护老系统就别碰第3种。5. 故障排查清单5分钟定位问题根源即使按教程操作偶尔也会失败。别慌对照这份清单5分钟内找到原因检查脚本路径/home/Desktop/中的Desktop是大写且home后面是你的真实用户名如/home/john/Desktop/。用ls /home/*/Desktop/快速确认。检查执行权限运行ls -l /home/Desktop/test.sh确保有x执行权限。没有就补chmod x /home/Desktop/test.sh。检查脚本第一行必须是#!/bin/bash或#!/bin/sh不能是 Windows 换行\r\n。用file /home/Desktop/test.sh查看如果显示CRLF用dos2unix /home/Desktop/test.sh修复。检查 GNOME 是否启用自动登录没有自动登录GNOME 启动管理器不会触发。这是新手最高频的遗漏点。查看日志如果用了rc.local或init.d运行sudo journalctl -u rc-local或sudo journalctl -u test-script查看错误详情。记住90% 的失败都出在这五点里。逐条核对比重装系统快得多。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。