Ubuntu 18 使用 rc.local執行開機啓動腳本

Ubuntu 18 開機啓動

在 Ubuntu 16以前,有個很簡單的 rc.local ,在這個文件內寫上你要執行的命令,在開機後,系統就會以管理員權限去執行這些命令。但是,這個啓動腳本的控制粒度並不是很精細。
所以,在Ubuntu18 版本開始,Ubuntu使用了 systemd 替代了 initd 管理系統。並且默認已經取消了 /etc/rc.local 文件。

找回 rc.local

配置 rc.local.service

  1. rc.local.service 文件路徑
/lib/systemd/system/rc.local.service
  1. 編輯 rc.local.service
vim /lib/systemd/system/rc.local.service
  1. rc.local.service 內容
[Unit]
Description=/etc/rc.local Compatibility
Documentation=man:systemd-rc-local-generator(8)
ConditionFileIsExecutable=/etc/rc.local
After=syslog.target network.target remote-fs.target nss-lookup.target
 
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=no
GuessMainPID=no
 
#這一段原文件沒有,需要自己添加
[Install]
WantedBy=multi-user.target
Alias=rc-local.service

  1. rc.local.service 內容解釋

     [Unit] 區塊:啓動順序與依賴關係。
    
     ConditionFileIsExecutable=/etc/rc.local
     After=network.target
    
     ConditionFileIsExecutable指定了執行的文件,
    
     After 表示在 network.target 這個target後面進行執行。也就是網絡啓動完成之後,執行 /etc/rc.local 文件。
    
     [Service] 區塊:啓動行爲,如何啓動,啓動類型。
    
     Type=forking
     ExecStart=/etc/rc.local start
     TimeoutSec=0
     RemainAfterExit=yes
     GuessMainPID=no
    
     [Install] 區塊,定義如何安裝這個配置文件,即怎樣做到開機啓動。
    
     [Install]
     WantedBy=multi-user.target
     Alias=rc-local.service
    
     [Install] 塊是我們自己編輯新增的。
    

添加服務文件

添加軟鏈接,將 /lib/systemd/system/rc.local.service 鏈接到 /etc/systemd/system/rc.local.service
系統在開機後會自動去 /etc/systemd/system/ 目錄下讀取需要啓動的服務配置

ln -s /lib/systemd/system/rc.local.service /etc/systemd/system/rc.local.service

新建 rc.local 文件

vim /etc/rc.local

寫入啓動命令

#!/bin/bash

# 將你需要執行的命令寫在這裏,禁止寫入死循環命令
echo "hello" > /home/test.log



exit 0

設置文件執行權限

chmod 755 /etc/rc.local

如果你是在 /etc/systemd/system/ 目錄下創建的文件,也要加上執行權限。

驗證

重啓主機,檢查 /home/ 下是否有 test.log 文件。
如果一切正常,在 /home/test.log 文件內,可以看到 hello

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