Ubuntu16.04 设置自启动的几种方式

前言
为了方便,我们经常希望将一些常用的软件或者程序设为开机启动,这里我以Ubuntu16.04为例进行讲解,介绍几种常见的开机自启动方法。

1. startup application

Step1 给执行文件(自带文件头:#!/bin/sh或者#!/usr/bin/env python)权限:
sudo chmod 777 可执行文件

直接添加任务名称Name、任务执行文件绝对路径或者执行命令Command和备注Comment。

2. rc.local

我们可以直接在 /etc/rc.local中添加开机启动命令:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
command
exit 0

另外,记得赋予待执行的源文件可执行权限。

3.init.d

下面保持当前路径为/etc/init.d:

Step1 在/etc/init.d新建一个开机自启动文件,如:test

Step2 在test中写入指令,最好带上文件头:

!/bin/sh

command &
之所以加上&是因为有些命令是一直执行的,可以放在后台执行。

Step3 赋权限:

sudo chmod 777 test

Step4 更新开机自启动列表:

sudo update-rc.d test defaults 

或者
sudo update-rc.d test defaults 数字

加上数字是为了防止有些开机自启动任务有顺序要求,数字越大越晚执行。

删除方式是:

sudo update-rc.d -f test remove

4. systemd

systemd是Ubuntu16.04及之后官方的开机自启动管理方式,我们可以在/etc/systemd/system中新建一个服务test.service,权限记得哦~,然后写入:

[Unit]
Description=this is test service

[Service]
Type=simple
ExecStart= <shell command>  #启动命令
ExecStop=<shell command>    #停止命令,可缺省

[Install]
WantedBy=multi-user.target #所有用户组都启动这个任务

各模块具体意义可参考这里。

然后执行:

sudo systemctl daemon-reload
sudo systemctl enable test.service

如果想即刻运行,则:

sudo systemctl start test.service

注意:以上可通过systemctl status commandname.service 来查看开机自启动项目是否设立成功,也可以在开机之后利用进程监控。

systemctl status commandname.service
0
封面图

评论0

没有账号? 注册  忘记密码?