1. Ubuntu 系统下实现开机自启脚本的完整指南
作为一名在Linux系统管理领域摸爬滚打多年的老运维,我经常需要配置各种服务的开机自启。今天要分享的是如何在Ubuntu系统中通过systemd服务实现脚本的可靠自启动,这个方案我已经在生产环境稳定运行了3年多,处理过各种复杂场景。
1.1 为什么选择systemd方案
在Linux系统中实现开机自启有多种方式,比如rc.local、crontab或者upstart,但我强烈推荐使用systemd,原因有三:
- 可靠性最高:systemd是Ubuntu 16.04及以后版本的默认初始化系统,直接由内核启动,不受用户登录状态影响
- 功能最全:支持服务依赖、自动重启、资源限制等高级功能
- 管理方便:统一的systemctl命令可以查看状态、启停服务和查看日志
特别是当你的脚本需要激活conda环境时,systemd的bash -c方式能完美解决环境加载问题,这是其他方案难以实现的。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 完整实施步骤详解
2.1 准备可执行脚本
首先确保你的run1.sh脚本具备以下特征:
bash复制#!/bin/bash
# 激活conda环境
source /path/to/conda/bin/activate your_env
# 后台运行Python脚本并输出日志
nohup python pub.py > pub.log 2>&1 &
nohup python machine_data.py > machine_data.log 2>&1 &
nohup python messenger.py > messenger.log 2>&1 &
关键操作:
bash复制chmod +x /data/robot_arm/robot_information_platform/run1.sh
注意:脚本第一行必须包含
#!/bin/bash,否则可能无法正确执行。所有路径建议使用绝对路径,避免因工作目录变化导致的问题。
2.2 创建systemd服务文件
服务文件存放在/etc/systemd/system/目录下,命名规范为服务名.service。以下是经过我优化后的配置:
i复制
