今天在弄一台DELL的GPU服务器,安装的Ubuntu18的版本然后需要做一个开机启动的程序,发现百度的方法死活不行。Ubuntu 18是已经用systemd管理系统。之前init.d ,开机启动就稍微复杂了点。
1、修改开机启动项,一般正常的启动文件主要分成三部分。
[Unit] 段: 启动顺序与依赖关系
[Service] 段: 启动行为,如何启动,启动类型
[Install] 段: 定义如何安装这个配置文件,即怎样做到开机启动
sudo vim /lib/systemd/system/rc-local.service
[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
2、增加 Install 段,少了 Install 段,也就没有定义如何做到开机启动,配置也就无效的,所以增加一个 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
3、Ubuntu 18版本默认是没有rc.local这个文件(/etc/rc.local),所以新建这个文件。
命令添加在exit 0之前。里面可以直接写命令或者执行Shell脚本文件sh
sudo vim /etc/rc.local
echo "test" > /data/1.txt ##命令或者可执行脚本,为了测试/data/1.txt存在。
exit 0
4、赋予下执行权限给rc.local.
sudo chmod +x /etc/rc.local
----------------------done----------------------------------------------------
5、以上就可以reboot重启试下效果。
把rc.local.service 链接到/etc/systemcd/system/下,我觉得没必要。
ln -s /lib/systemd/system/rc.local.service /etc/systemd/system/