0

0

Linux如何设置脚本开机运行_Linux在rc.local添加任务【实战】

裘德小鎮的故事

裘德小鎮的故事

发布时间:2026-02-14 20:22:03

|

173人浏览过

|

来源于php中文网

原创

rc.local 经常不生效是因为现代 linux 发行版默认使用 systemd,rc-local 服务被屏蔽或未启用;需检查状态、确保文件可执行且含正确 shebang、用绝对路径调用命令和 python 解释器、避免交互操作;更可靠的方式是改用 systemd service,并正确配置依赖、启动时机和日志排查。

linux如何设置脚本开机运行_linux在rc.local添加任务【实战】

rc.local 为什么经常不生效

因为多数现代 Linux 发行版(Ubuntu 16.04+、CentOS 7+、Debian 9+)默认用 systemd 管理启动流程,/etc/rc.local 不再自动启用,甚至服务单元被屏蔽(masked)。你加了脚本却没运行,大概率不是写错了,而是 rc-local 服务根本没启动。

实操建议:

  • 先检查服务状态:systemctl status rc-local —— 如果显示 inactive (dead)masked,就得手动启用
  • 确保 /etc/rc.local 文件存在且可执行:chmod +x /etc/rc.local
  • 确认文件以正确 shebang 开头(如 #!/bin/bash),且第一行不是空行或注释(systemd 会跳过无 shebang 的脚本)
  • /etc/rc.local 里所有命令前加完整路径(比如用 /usr/bin/python3 而非 python3),因为开机时 $PATH 极简

rc.local 里执行 Python 脚本总失败

常见错误现象是日志里报 ModuleNotFoundError 或直接卡住不动 —— 不是 Python 没装,而是环境没加载。开机时 rc.localroot 身份、极简 shell(通常是 /bin/sh)运行,不读取用户 .bashrcvenv 激活逻辑。

实操建议:

  • 用绝对路径调用解释器和脚本:/usr/bin/python3 /opt/myscript.py
  • 如果依赖虚拟环境,别用 source venv/bin/activate —— 改为直接调用环境里的 python:/opt/myproject/venv/bin/python /opt/myproject/main.py
  • 重定向输出查错:/usr/bin/python3 /opt/myscript.py >> /var/log/myscript.log 2>&1
  • 避免交互式操作(如 input()getpass()),开机时没有 stdin

systemd 替代方案更可靠但容易配错

如果你发现 rc.local 总不稳定,直接写 systemd service 是更现代、更可控的选择。但它对路径、权限、依赖顺序敏感,配错就静默失败。

FineVoice语音克隆
FineVoice语音克隆

免费在线语音克隆,1 分钟克隆你的声音,保留口音和所有细微差别。

下载

实操建议:

  • 服务文件必须放在 /etc/systemd/system/ 下,后缀为 .service(如 myscript.service
  • Type=oneshot 适合只运行一次的脚本;加 RemainAfterExit=yes 才能让 systemd 认为服务“成功运行”而非立即退出
  • WantedBy=multi-user.target(不是 default.target),否则可能错过网络就绪时机
  • 务必运行 systemctl daemon-reload,否则修改不生效;然后用 systemctl enable myscript.service 启用
  • 查错看日志:journalctl -u myscript.service -b

脚本执行时机比你想的更早

无论走 rc.local 还是 systemd,脚本都在网络、挂载、用户服务之前运行。如果你的脚本要访问 NFS 目录、调用 curl 请求内网 API、或依赖 dockerd,十有八九会失败 —— 它们还没起来。

实操建议:

  • 加等待逻辑不如加依赖声明:在 systemd service 里用 After=network-online.targetWants=network-online.target
  • 对 NFS 或远程存储,用 systemd.mount 单元确保挂载完成后再启动你的服务
  • 避免在脚本里硬写 sleep 30,不可靠还拖慢启动;优先用 systemd 的依赖机制
  • 如果必须等某个进程(如 docker),可用 ExecStartPre=/bin/sh -c 'until command -v docker &>/dev/null; do sleep 1; done',但仅作兜底

真正麻烦的从来不是“怎么加一行命令”,而是搞清它在哪一刻、以什么身份、带着什么环境、面对什么依赖去执行 —— 这些细节不核对清楚,重启后脚本不跑,连日志都找不到地方看。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

244

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

706

2024.03.01

curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

450

2023.06.14

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

180

2023.10.30

default gateway怎么配置
default gateway怎么配置

配置default gateway的步骤:1、了解网络环境;2、获取路由器IP地址;3、登录路由器管理界面;4、找到并配置WAN口设置;5、配置默认网关;6、保存设置并退出;7、检查网络连接是否正常。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

228

2023.12.07

点击input框没有光标怎么办
点击input框没有光标怎么办

点击input框没有光标的解决办法:1、确认输入框焦点;2、清除浏览器缓存;3、更新浏览器;4、使用JavaScript;5、检查硬件设备;6、检查输入框属性;7、调试JavaScript代码;8、检查页面其他元素;9、考虑浏览器兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

193

2023.11.24

k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

265

2023.07.24

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

511

2024.04.08

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

76

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9.1万人学习

Git 教程
Git 教程

共21课时 | 3.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号