雲栖号資訊:【 點選檢視更多行業資訊】
在這裡您可以找到不同行業的第一手的上雲資訊,還在等什麼,快來!
在工作中,我們經常有個需求,那就是在系統啟動之後,自動啟動某個腳本或服務。在 Windows 下,我們有很多方法可以設定開機啟動,但在 Linux 系統下我們需要如何操作呢?
Linux 下同樣可以設定開機啟動,但可能需要我們敲一些指令(可能也有 UI 界面的設定方法,但我不熟,我更多是玩指令)。下面我們就介紹三種簡單但可行的開機啟動設定方法。
方法一:修改 /etc/rc.d/rc.local 檔案
/etc/rc.d/rc.local 檔案會在 Linux 系統各項服務都啟動完畢之後再被運作。是以你想要自己的腳本在開機後被運作的話,可以将自己腳本路徑加到該檔案裡。
但是,首先需要确認你有運作這個檔案的權限。
$ chmod +x /etc/rc.d/rc.local
為了示範,我們建立了一個腳本,當它被執行之後,将在家目錄下寫入有特定資訊的檔案。
$ vim auto_run_script.sh
#!/bin/bash
date >> /home/alvin/output.txt
hostname >> /home/alvin/output.txt
儲存退出後,再給它賦予可執行權限:
$ chmod +x auto_run_script.sh
然後,我們再将腳本添加到 /etc/rc.d/rc.local 檔案最後一行:
$ vim /etc/rc.d/rc.local
/home/alvin/auto_run_script.sh
碼接下來,我們就可以試試效果了。直接重新開機系統就可以了:
$ sudo reboot
</code></pre>
重新開機之後,就會在家目錄下看到腳本執行的結果了。

方法二:使用 crontab
大家知道,crontab 是 Linux 下的計劃任務,當時間達到我們設定的時間時,可以自動觸發某些腳本的運作。
我們可以自己設定計劃任務時間,然後編寫對應的腳本。但是,有個特殊的任務,叫作 @reboot ,我們其實也可以直接從它的字面意義看出來,這個任務就是在系統重新開機之後自動運作某個腳本。
那它将運作的是什麼腳本呢?我們如何去設定這個腳本呢?我們可以通過 crontab -e 來設定。
然後,直接重新開機即可。運作的效果跟上面類似。
方法三:使用 systemd 服務
以上介紹的兩種方法,在任何 Linux 系統上都可以使用。但本方法僅适用于 systemd 系統。如何區分是不是 systemd 系統?很簡單,隻需運作 ps aux 指令,檢視 pid 為 1 的程序是不是 systemd 。
為了實作目的,我們需要建立一個 systemd 啟動服務,并把它放置在 /etc/systemd/system/ 目錄下。
我們建立的 systemd 啟動服務如下。請注意,這時字尾是 .service ,而不是 .sh 。
[Unit]
Description=Run a Custom Script at Startup
After=default.target
[Service]
ExecStart=/home/alvin/auto_run_script.sh
[Install]
WantedBy=default.target
從服務的内容可以看出來,我們最終還是會調用 /home/alvin/auto_run_script.sh 這個腳本。
然後,我們再把這個腳本放置在 /etc/systemd/systerm/ 目錄下,之後我們再運作下面兩條指令來更新 systemd 配置檔案,并啟動服務。
$ systemctl daemon-reload
$ systemctl enable auto_run_script.service
萬事俱備之後,我們就可以重新開機系統啦。
$ reboot
【雲栖号線上課堂】每天都有産品技術專家分享!
課程位址:
https://yqh.aliyun.com/live立即加入社群,與專家面對面,及時了解課程最新動态!
【雲栖号線上課堂 社群】
https://c.tb.cn/F3.Z8gvnK
原文釋出時間:2020-06-11
本文作者:良許Linux
本文來自:“
掘金”,了解相關資訊可以關注“掘金”