在Ubuntu14.04 /16.04 系统上,其用initd管理系统,之前也写的一篇文章《在Linux中利用Service命令添加系统服务及开机自启动》,介绍如何在 rc.local 脚本中开启启动自己编写的脚本、程序或者服务等。而现在Ubuntu18.04不再使用initd管理系统,改用systemd。下面介绍一种方法,通过下列简单设置后,可以使rc.local重新发挥作用。
1 机制
systemd 默认会读取 /etc/systemd/system 下的配置文件,该目录下的文件会链接 /lib/systemd/system/ 下的文件。
一般系统安装完 /lib/systemd/system/ 下会有 rc-local.service 文件,即我们需要的配置文件。该文件里面有写到 rc.local 的启动顺序和行为。
我们可以看到,其中还有类似reboot.target 一类的*.target文件,用于指定什么时候启动 我们自己自定的软件。
$ ll | grep target
-rw-r--r-- 1 root root 919 1月 28 2018 basic.target
drwxr-xr-x 2 root root 4096 5月 18 2018 basic.target.wants/
-rw-r--r-- 1 root root 419 1月 28 2018 bluetooth.target
-rw-r--r-- 1 root root 465 1月 28 2018 cryptsetup-pre.target
-rw-r--r-- 1 root root 412 1月 28 2018 cryptsetup.target
lrwxrwxrwx 1 root root 13 9月 30 23:23 ctrl-alt-del.target -> reboot.target
lrwxrwxrwx 1 root root 16 9月 30 23:23 default.target -> graphical.target
-rw-r--r-- 1 root root 471 1月 28 2018 emergency.target
-rw-r--r-- 1 root root 541 1月 28 2018 exit.target
-rw-r--r-- 1 root root 480 1月 28 2018 final.target
...
2 方法
现在介绍如何在Ubuntu18.04启用 rc.local 设置开机启动脚本。
1) rc-local.service 文件虽然里面有写到 rc.local 的启动顺序和行为,但是没用写加载这个 rc-local.service ,编译该文件:
sudo vim /lib/systemd/system/rc-local.service
在文件后加上如下内容:
[Install]
WantedBy=multi-user.target
Alias=rc-local.service
2)将 /lib/systemd/system/rc-local.service 链接到 /etc/systemd/system/ 目录下:
sudo systemctl enable rc-local.service
#或者
sudo ln -fs /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service
3)创建/etc/rc.local文件,赋可执行权限:
sudo touch /etc/rc.local
sudo chmod 755 /etc/rc.local
4)编辑rc.local,添加需要开机启动的任务:
#!/bin/bash
echo "test rc " > /var/test.log
5)执行reboot重启系统,然后查看test.log:
到此为止,和以前一样的 rc.local 就完成了!
原文链接:https://blog.csdn.net/u013554213/article/details/102947060
阅读(632) | 评论(0) | 转发(0) |