很多时候想开机时便启动想要启动的命令(甚至是需要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文件了,加入自己想要运行的脚本。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐