赞
踩
在/etc/init.d/路径下创建 start.sh文件
在文件内编辑要自启动的指令
且修改文件权限为可执行权限
sudo chmod 777 start.sh
输入指令gnome-session-properties 会出现一个配置界面,将要执行的start.sh文件的路径添加进去
首先编辑/lib/systemd/system目录下的rc-local.service文件,内容如下(sudo gedit rc-local.service)
- [Unit]
- Description=/etc/rc.local Compatibility
- Documentation=man:systemd-rc-local-generator(8)
- ConditionFileIsExecutable=/etc/rc.local
- After=network.target
-
- [Service]
- Type=forking
- ExecStart=/etc/rc.local start
- TimeoutSec=0
- RemainAfterExit=yes
- GuessMainPID=no
-
- [Install]
- WantedBy=multi-user.target
编辑rc.local文件,可添加指令(注意添加绝对路径)
修改文件权限为可执行权限
sudo chmod 777 rc.local
路径:/etc
可通过
- sudo systemctl enable rc-local //使能自启服务
- sudo systemctl start rc-local.service //手动启动自启项服务
- sudo systemctl status rc-local.service //查看启动项状态
目前的启动文件如下,在循环执行的语句后面一定要加"&",这样做的原因是另应用执行一次后,转为后台执行,如果不加则可能回在系统启动界面卡住,导致进不去系统
- #!/bin/bash -e
-
- export ROS_LOG_DIR=/home/ly/fish_ws/log #ros文件的log路径 这个必须要写 否则会报python类的错误
-
- . /opt/ros/eloquent/setup.sh #更新ros应用 否则需要在下面的ros指令中添加绝对路径
- . /home/ly/fish_ws/install/setup.sh #更新要执行的ros功能包路径
-
- #ros2 launch /home/ly/fish_ws/src/topic_multi_thread/lanuch/fish_launch.py &
- #ros2 launch /home/ly/fish_ws/src/topic_multi_thread/lanuch/fish_launch.py &
- #ros2 launch topic_multi_thread fish_launch.py &
- ros2 run topic_multi_thread mt_pub_sub & #执行ros的launch文件
- exit 0
异常问题
(1)当启动服务阶段(下面指令)出现error提示,为rc.local文件语法错误,修正后无错。报错截图后续补充
sudo systemctl start rc-local.service //手动启动自启项服务
(2)通过启动状态看到获取主目录相关错误,如下:
- ● rc-local.service - /etc/rc.local Compatibility
- Loaded: loaded (/lib/systemd/system/rc-local.service; enabled; vendor preset: enabled)
- Drop-In: /lib/systemd/system/rc-local.service.d
- └─debian.conf
- Active: active (exited) since Mon 2022-06-20 20:21:02 PDT; 2s ago
- Docs: man:systemd-rc-local-generator(8)
- Process: 2166 ExecStart=/etc/rc.local start (code=exited, status=0/SUCCESS)
-
- 6月 20 20:21:02 ubuntu systemd[1]: Starting /etc/rc.local Compatibility...
- 6月 20 20:21:02 ubuntu systemd[1]: Started /etc/rc.local Compatibility.
- 6月 20 20:21:03 ubuntu rc.local[2166]: [ERROR] [rcl]: Failed to configure logging: Failed to get users home directory, at /tmp/binarydeb/ros-eloquent-rcl-logging-spdlog-0.3.3/src/rcl_logging_spdlog.cpp:90
- 6月 20 20:21:03 ubuntu rc.local[2166]: Failed to init: Failed to get users home directory, at /tmp/binarydeb/ros-eloquent-rcl-logging-spdlog-0.3.3/src/rcl_logging_spdlog.cpp:90
需要在rc.local添加环境变量主目录为当前用户目录,如下语句
export HOME=/home/lyzln
(3)通过启动状态看到Python相关错误,如下(错误截图待补充):
解决办法:需要在rc.local添加日志路径环境变量配置语句如下:
export ROS_LOG_DIR=/home/lyzln/fish_ws/log
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。