在ubuntu系统下实现程序开机自启
由于项目工程的需要(例如服务器上的程序)会要求开机自启,本人目前涉及到的开机自启分为:带界面的开机自启(即程序运行有界面)、无界面的开机自启。该文档介绍ubuntu16.04系统下有界面和无界面的开机自启方法,且这些方法都已在项目上应用,如有错误,望大家指正。
1、无界面的开机自启
-
使用ubuntu自带的启动软件 – “Startup Applications”
注意:该方法设置完成后系统需进入桌面,程序才能自启
(1)首先需要创建一个启动程序的shell脚本 app_build.sh 文件
app_build.sh文件内容可如下:#!/bin/bash cd /home/nvidia/workspace # 需启动程序的路径,可自行修改 echo "start app_build" > log.txt # 保存启动日志 ./app_build # 程序的可执行文件名称
最后进行开机自启验证
- 使用ubuntu系统方法开机自启
注意:该方法设置完成后系统开启程序即自启
(1)如上,一样需要创建app_build.sh脚本文件
(2)创建app.start.service文件,文件内容如下:
[Unit]
Description=app_build # 需启动程序的描述
After=network.target
[Service]
Type=forking
ExecStart=/home/nvidia/Public/app_build.sh # app_build.sh脚本路径
ExecReload=/home/nvidia/Public/app_build.sh
ExecStop=/home/nvidia/Public/app_build.sh
PrivateTmp=true
[Install]
WantedBy=multi-user.target
(3)将app.start.service文件拷贝到 /lib/systemd/system 路径下:
$ cp app.start.service /lib/systemd/system
(4)进行开机启动配置
sudo systemctl enable app.start.service
sudo systemctl daemon-reload
(5) 开机自启进行验证
(6)其他命令:
重启app.start.service命令:
sudo systemctl start app.start.service
查看启动状态:
$ journalctl -xb
或者
$ sudo systemctl status app.start.service
2、带界面的开机自启
1、创建文件 ExceptionSys.desktop:
2、编辑内容:
[Desktop Entry]
Type=Application
Name=ExceptionSys
GenericName=ExceptionSys
Comment=ExceptionSys:nvidia
Exec=sh /usr/local/opt/nvidia/Exception/app_build.sh -desktop # 程序开启脚本sh文件所在路径
Icon=/usr/local/opt/nvidia/Exception/default.png # 程序图标,随意指定png文件
Terminal=false
Categories=Development
3、终端输入命令:
$ cp ExceptionSys.desktop /usr/share/applications/
$ cp ExceptionSys.desktop $HOME/.config/autostart/
4、开机自启验证