今天在弄一台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
#!/bin/bash
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/