你希望在 Ubuntu 系统中配置run1.sh脚本,让它在开机和重启后自动执行,这个脚本的核心作用是激活指定的 conda 环境,并后台运行三个 Python 脚本并输出日志。
下面为你提供最推荐、最稳定的实现方式(基于 systemd 服务),这是 Ubuntu 系统管理开机自启服务的标准方式:

步骤 1:确保脚本有可执行权限

首先执行以下命令,赋予脚本执行权限(替换为你的实际路径):
bash
运行
chmod +x /data/robot_arm/robot_information_platform/run1.sh

步骤 2:创建 systemd 服务文件

创建一个自定义的系统服务文件,执行以下命令:
bash
运行
sudo vim /etc/systemd/system/robot-platform.service
将以下内容粘贴到文件中(注意替换路径和用户为你的实际信息):
ini
[Unit]
Description=Robot Information Platform Service
After=network.target  # 确保网络启动后再执行脚本
Wants=network.target

[Service]
Type=simple
User=rykj # 替换为你的用户名(脚本要以该用户身份运行)
Group=rykj # 替换为你的用户组(通常和用户名相同)
WorkingDirectory=/data/robot_arm/robot_information_platform # 脚本所在目录
# 执行脚本(bash -c 确保能正确source conda环境)
ExecStart=/bin/bash -c “source /data/robot_arm/robot_information_platform/run1.sh”
# 重启策略:意外退出时自动重启
Restart=on-failure
RestartSec=5s
# 日志输出重定向(可选,systemd自带日志)
StandardOutput=append:/data/robot_arm/robot_information_platform/service.log
StandardError=append:/data/robot_arm/robot_information_platform/service_error.log

[Install]
WantedBy=multi-user.target # 多用户模式下开机自启

步骤 3:重新加载并启用服务

执行以下命令使配置生效,并设置开机自启:
bash
运行
# 重新加载systemd配置
sudo systemctl daemon-reload

# 启用服务(开机自启)
sudo systemctl enable robot-platform.service

# 立即启动服务(测试是否正常运行)
sudo systemctl start robot-platform.service

步骤 4:验证服务状态

执行以下命令检查服务是否正常运行:
bash
运行
# 查看服务状态
sudo systemctl status robot-platform.service
# 查看服务日志(排查问题用)
journalctl -u robot-platform.service -f
如果输出显示 active (running),说明服务启动成功。

步骤 5:重启测试(可选)

你可以重启系统验证效果:
bash
运行
sudo reboot
重启后执行 sudo systemctl status robot-platform.service,确认服务仍在运行即可。

补充说明

  1. 脚本路径问题:确保run1.sh中的所有相对路径(如 Python 脚本)都是基于WorkingDirectory的,或直接使用绝对路径,避免路径错误。
  2. conda 环境问题systemd服务是非交互式 shell,通过bash -c执行source可以确保 conda 环境被正确加载。
  3. 日志查看
    • Python 脚本的日志:pub.logmachine_data.logmessenger.log(脚本自身输出)
    • 服务运行日志:service.logservice_error.log(systemd 输出)
    • 系统日志:journalctl -u robot-platform.service

常用服务管理命令

bash
运行
# 停止服务
sudo systemctl stop robot-platform.service

# 重启服务
sudo systemctl restart robot-platform.service

# 禁用开机自启
sudo systemctl disable robot-platform.service

# 查看服务启动日志
journalctl -u robot-platform.service –since “10 minutes ago”

总结

  1. 核心方案:通过创建systemd服务文件实现开机自启,这是 Ubuntu 最稳定的自启方式,支持重启策略和日志管理。
  2. 关键配置:服务文件中需指定正确的User(避免权限问题)、WorkingDirectory(确保脚本路径正确)、ExecStart(用 bash -c 加载 conda 环境)。
  3. 验证方式:通过systemctl statusjournalctl检查服务状态,重启系统确认自启效果。
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐