ubuntu18.04和16.04不同,但经过简单几步可以获得像16.04一样的效果。
18.04简单而言,就是需要创建一个服务,创建一个脚本,用该服务去启动脚本,脚本内容就是我们想要机器执行的内容。(16.04有默认的rc.local文件,18.04一般没有默认的rc.local文件)
下面是开机脚本的创建和执行过程,其他通用脚本也是相似,需要创建服务和脚本,用服务去启动脚本。
实际过程:
1.手动创建一个服务service文件 rc-local.service 文件并打开
sudo vi /etc/systemd/system/rc-local.service
2. 输入以下内容
[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
3. 创建一个脚本文件 rc.local 并打开
sudo vi /etc/rc.local
4. 文件内写入以下内容
#!/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.
echo "看到这行字,说明添加自启动脚本成功。" > /usr/local/test.log
exit 0
5.上述内容中,echo 语句的作用是把字符串写入后面的文件内,可以替换为其他脚本命令,如输出 ls 命令的执行结果到一个文件内,则echo语句替换为
sudo ls > /root/test_kaiji_ls.txt
exit 0
# rc.local 文件以 exit 0 语句为结尾,脚本内容写在它之前
6. 给rc.local文件加上权限
sudo chmod +x /etc/rc.local
7. 启动服务
sudo systemctl enable rc-local
8. 启动服务并检查状态
sudo systemctl start rc-local.service
sudo systemctl status rc-local.service
9. 执行命令 init 6 重启机器后到相应文件如 /usr/local/test.log 查看结果
cat /usr/local/test.log