转自微信 谭狗星
很多时候想开机时便启动想要启动的命令(甚至是需要sudo的命令)。
但是如何设置呢,一般来说有以下三种方法。
(本文针对的是ubuntu18.04设置开机启动命令或者脚本)
1 不用sudo的命令开机自启动
1.1 方法一(开机自动执行一条指令)
1.在终端中输入
gnome-session-properties
2.点右方的add加入
填写名称,可自定义
填写指令,即开机想要执行的指令
比如要启动vino,就添加如下指令
/usr/lib/vino/vino-server
1.2 方法二(开机自动执行一个脚本)
1.首先要编写一个脚本,先用touch创建一个脚本文件
touch startvino
2.打开并编辑
sudo vim startvino
3.脚本中填写以下内容,第一行是要添加的解释器,后面是要执行的指令内容
#!/bin/bash
/usr/lib/vino/vino-server
4.编写了脚本后,将脚本文件mv移动到/etc/init.d/文件夹中
并添加权限
sudo chmod 777 startvino
5.添加开机启动
sudo update-rc.d startvino defaults 90
删除开机启动
sudo update-rc.d -f startvino remove
2 需要sudo的命令开机自启动
ubuntu作为服务器使用时,常常需要在机器重启时能自动启动我们开发的服务。
Ubuntu 18.04不再使用initd管理系统,改用systemd,包括用systemctl命令来替换了service和chkconfig的功能。
systemd 默认读取 /etc/systemd/system 下的配置文件,该目录下的文件会链接/lib/systemd/system/下的文件。
不同于以往的版本,ubuntu18.04默认不带/etc/rc.local文件,我们需要通过配置来让rc.local.service生效。
然后我们就可以像以前那样,直接把启动脚本写入/etc/rc.local文件,这样机器启动时就会自动运行它。
2.1 方法三(需要sudo的命令)
1.检查系统目录/lib/systemd/system/rc-local.service,如果没有自己新建,文件内容为(如果文件存在本身是没有[Install]项的,需要自己添加进去)
#### 文件中本身就有的
[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
Alias=rc-local.service
同样etc目录下的文件也需要进行如上修改(有可能已经自动修改),检查/etc/systemd/system/rc-local.service,进行以上修改。
2.创建/etc/rc.local脚本文件,并写入想要运行的脚本程序
(可以先写个示例验证一下)
#! /bin/bash
#### 这里在/usr/local里面创建文件夹是想看是否有执行的权限
#### 事实证明是有的
mkdir /usr/local/temp
echo "test auto bootstrap" > /usr/local/temp/1.log
3.给rc.local执行的权限
sudo chmod +x /etc/rc.local
4.启用服务
sudo systemctl enable rc-local
sudo systemctl start rc-local.service
sudo systemctl status rc-local.service
5.查看效果
可以看到/usr/local/temp文件夹被创建了,1.log文件也被创建了。
验证重启
sudo rm -rf /usr/local/temp
sudo reboot
依然有效即为成功。
6.这个时候就可以修改/etc/rc.local文件了,加入自己想要运行的脚本。