一、启动项分类
Ubuntu开机启动项分为后端运行(后台服务)的和前端运行(桌面应用)的,其中后端运行的程序或脚本没有交互界面(没有终端,不弹出任何窗口),前端运行的程序为平时我们在终端键入的一般程序。
二、前端程序(脚本)自启动
方法一:
前端程序由XXX.desktop文件启动,在/home/username/.config/下新建一个文件夹autostart,如果有了的话就不用新建了,.config文件如果隐藏了可以在前一级目录下按ctrl+H显示出来。在autostart文件夹下新建XXXX.desktop,我这里是叫mystart.desktop,打开mystart.desktop,键入如下代码
[Desktop Entry]
Type=Application
Name=StartScript
Exec=/home/xxx/start.sh
Terminal=true
在/home/xxx下新建一个start.sh,打开start.sh
#! /bin/bash
source /home/xxx/.profile
source /home/xxx/.bashrc
gnome-terminal -- /bin/bash -c 'roslaunch bagname yourlaunch.launch'
exit 0
gnome-terminal 会新建一个终端,这个终端不会加载环境变量,因此如果要运行roslaunch需要首先加载环境变量(通过source)。
方法二:
对于arm系统,在所有软件中搜索Session and Startup
点击add添加
其中的Name自己随便起,Command为待执行的sh文件,例:gnome-terminal -- /bin/bash -c /home/xxx/start.sh
对于x86系统,在所有软件中搜索Startup Applications Preferences,添加方法与arm中相同。
三、后端程序(脚本)自启动
新建脚本文件xxx.sh
格式与后端的脚本文件相同,但是脚本内容不会在前端显示
在/etc/systemd/system目录下新建文件xxx.service,在文件中输入如下内容
[Unit]
Description=StartScript
After=network.target
[Service]
Type=simple
User=root
ExecStart=/bin/bash -c /your dir/xxx(start).sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
sudo chmod 777 /your dir/xxx.sh
sudo chmod 777 /etc/systemd/system/xxx.service
sudo systemctl daemon-reload
sudo systemctl enable xxx.service
sudo systemctl start xxx.service
sudo systemctl status xxx.service查看服务状态,是否能够正常启动