ubuntu-18.04 啓用 rc.local 設置開機啓動腳本

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 就完成了!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章