开机自启动掌握以下两种即可
一、做成服务(service)
1、按以下模板编写一个service文件,如我需要做一个 npc进程开机自启的功能,我设计的 npc.service 内容如下:
[Unit]
Description="npc"
After=network.target
[Service]
Type=simple
ExecStart=/home/moi/npc/start_npc.sh
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
以上关键字段解释如下:
systemd配置文件主要项目说明:
控制单元[Unit]:记录unit文件的通用信息
Description:单元的描述,内容可以任意书写,
服务[Service]:记录service的信息
Type:service的种类。
(1)simple(默认):启动的程序是主体程序,这个程序退出那么一切都退出。如果是像上面的配置(ExecStart=/home/moi/npc/start_npc.sh)通过脚本把主程序启动起来,这就需要这个脚本是永不退出的;
(2)forking:启动程序后会调用 fork() 函数,把必要的通信频道都设置好之后父进程退出,留下子进程。这种方式启动,启动脚本启动完之后是可以退出的;
(3)oneshot:就是启动,完成,没进程。
ExecStart:服务启动时执行的命令,通常是服务的主体。
Restart:定义服务何种情况下重启。
2、将上面的 service文件拷贝进目录:/lib/systemd/system
sudo cp ./npc.service /lib/systemd/system
3、使能并启动服务
sudo systemctl enable npc.service
sudo systemctl start npc.service
sudo systemctl status npc.service
二、做成.desktop文件放置在~/.config/autostart/
1、按以下模板编写一个 .desktop文件如下
powerBoot.sh.desktop
[Desktop Entry]
Type=Application
Exec=/home/moi/robotself_new_deploy/bin/powerBoot.sh
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_US]=powerBoot.sh
Name=powerBoot.sh
Comment[en_US]=
Comment=
关键字段解释:
Exec:启动程序需要执行的命令
2、将以上文件拷贝进目录:~/.config/autostart/
cp powerBoot.sh.desktop ~/.config/autostart/