Ubuntu配置开机自启动

一、 创建启动脚本

创建启动脚本start_control_ros.sh

#!/bin/bash

# Wait for the network to be up (if needed)
sleep 30

# Source your ROS setup.bash (adjust the path if necessary)
source /opt/ros/noetic/setup.bash
source /home/boat/duyiming_ws/devel/setup.bash
export ROS_MASTER_URI=http://192.168.0.100:11311
export ROS_HOSTNAME=192.168.0.100
export ROS_IP=192.168.0.100
export ROS_LOG_MAX_DISK_BUFFER_SIZE=1024

# Launch your roslaunch file
roslaunch test boat_modbus_TCP_speed_start.launch
View Code


二、创建 systemd 服务单元文件

2.1 编辑服务单元文件

创建一个 systemd 服务单元文件来管理你的启动脚本

sudo vi /etc/systemd/system/boat_start_ros.service

内容如下:

[Unit]
Description=ROS Node Example
After=network.target
Wants=network-online.target


[Service]
Type=simple
ExecStart=/home/boat/duyiming_ws/src/test/scrips/boat_start/start_control.sh
Restart=always
User=boat
RestartSec=5  # 在重启尝试之间添加 5 秒延迟

[Install]
WantedBy=multi-user.target
View Code

  • Description: 描述你的服务的信息。
  • After: 指定依赖的服务,这里是网络服务 (network.target),确保在网络准备好后再启动。
  • ExecStart: 指定要执行的启动脚本的路径。
  • Restart: 定义服务在失败时如何重启。always 表示始终重启,可以根据需要调整。
  • User: 如果你需要以特定用户的身份运行服务,可以指定这个用户。替换 your_username 为你的实际用户名。

  • 2.2 设置文件权限并启用服务

    设置文件权限:

    sudo chmod +x /home/boat/duyiming_ws/src/test/scripys/boat_start/start_control.sh
    sudo chmod 644 /etc/systemd/system/boat_start_ros.service
    sudo systemctl daemon-reload  # 重新加载 systemd 配置
    sudo systemctl enable boat_start_ros.service

    三、启动和管理服务

    启动服务:

    sudo systemctl start boat_start_ros.service

    停止服务:

    sudo systemctl stop boat_start_ros.service

    重启服务:

    sudo systemctl restart boat_start_ros.service

    查看服务状态和日志:

    sudo systemctl status boat_start_ros.service

    四、查看日志

    如果服务启动失败或遇到问题,你可以使用 journalctl 来查看系统日志:

    journalctl -xe
    posted @ 2024-07-26 13:31  Yimiu  阅读(136)  评论(0编辑  收藏  举报