引子
虽然现在docker、k8s大行其道,我们的世界似乎已经被容器主宰,但是有一些程序还是不适合放到docker里面跑,比如node-exporter、自己写的某些程序,但是这些程序又是必须的,
如果每次重启机器都需要自己去启动一次那真的是太累了,所以这些程序需要自启动。
操作步骤
- 检查系统目录/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/rc.local脚本文件,并写入要运行的程序
#! /bin/bash
#### 这里在/usr/local里面创建文件夹是想看是否有执行的权限
#### 事实证明是有的
mkdir /usr/local/temp
echo "test auto bootstrap" > /usr/local/temp/1.log
#### exit 0 是14.04里面建议要写的,18.04不知道需不需要先写上了
exit 0
- 给rc.local执行的权限
sudo chmod +x /etc/rc.local
- 启用服务
sudo systemctl enable rc-local
- 启动服务
sudo systemctl start rc-local.service
sudo systemctl status rc-local.service
- 查看效果
可以看到/usr/local/temp文件夹被创建了,1.log文件也被创建了。 - 验证重启
sudo rm -rf /usr/local/temp
sudo reboot
依然有效即为成功....