1. 创建服务
进入 /etc/systemd/system 目录下 编写一个我们所需要的服务:
2. 编写服务
# Unit:描述服务单元的总体信息
# Description: 对服务的简单描述
# After: 指定该服务应在网络启动后开始运行
[Unit]
Description=Start ROS2 Nodes and MicroXRCEAgent
After=network.target
# Service: 定义服务的具体行为和配置
# Type=simple:这是服务的类型,表示 ExecStart 中定义的命令会启动该服务的主要进程。
# 默认情况下, systemd 会认为该进程将持续运行,直到服务终止。
# ExecStart: 定义服务启动时执行的命令, 这里是启动一个 shell 脚本, 也可以替换为想使用的命令
# 例如: ExecStart=/bin/bash -c "echo hello"
# Restart=on-failure:如果服务因故障(非正常退出)停止,将自动重启。
# User=jetson:指定运行该服务的用户是 jetson。
[Service]
Type=simple
ExecStart=/home/jetson/transmissionrobot2_dev/start_ros2_node.sh
Restart=on-failure
User=jetson
# Install: 定义如何将该服务与系统的启动过程相关联。
# WantedBy=multi-user.target:表示当系统进入 multi-user 目标(即大多数服务运行的普通系统状态)时,该服 务将启动。
[Install]
WantedBy=multi-user.target
3. 启动服务
4. 相关指令
# 查看服务状态:
systemctl status <service-name>
# 启动服务:
sudo systemctl start <service-name>
# 停止服务:
sudo systemctl stop <service-name>
# 启用服务开机自启动:
sudo systemctl enable <service-name>
# 禁用服务开机自启动:
sudo systemctl disable <service-name>
# 重启服务:
sudo systemctl restart <service-name>
# 查看所有服务的状态:
systemctl list-units --type=service