Linux 系統中設定自定義指令碼開機自啟動有如下幾種方式
方案一、增加cron task
1. 開啟任務檔案 cron
# 執行如下命令開啟當前使用者的 cron,如果開啟root使用者的cron,執行 sudo crontab -e
crontab -e
2. 向其中加入如下需要開機自啟的指令碼
# @reboot 後為使用者自定義的啟動指令碼的完整路徑,替換成自己的指令碼路徑
@reboot </path/to/myscript.sh>
【注意】
- 在此需要加入自定義指令碼的完整路徑,不能為相對路徑。
- 該指令碼需要有可執行許可權。
- 如果需要檢視 cron 中的內容,使用
crontab -l
檢視當前普通使用者;sudo crontab -l
:檢視root 使用者。 - 自定義指令碼中的內容需要注意,如果寫入檔案要使用完整的路徑,而不是相對路徑。
方案二、透過 systemd
管理自啟動服務
現代Linux預設使用 systemd
作為初始化系統,該方式來設定開機啟動項也是最推薦的方式
1、建立並啟動對應服務
1) 建立 systemd
服務檔案
在/etc/systemd/system
目錄下建立 myTest.service
檔案,檔名需要為 xxxx.service
sudo vim /etc/systemd/system/myTest.service
2) 在對應的 .service
檔案中寫入如下內容
[Unit]
Description=My self restart execute test file
[Service]
ExecStart=/home/codex/x03/test02.sh
Restart=always
User=root
Type=simple
[Install]
WantedBy=multi-user.target
【注意】
- Service 中的
ExecStart
的值需要為完整的路徑。 - 該檔案的註釋為前面加
#
3) 執行如下命令
# 重新載入 systemd 配置的命令,確保任何更改都能被識別
sudo systemctl daemon-reload
# 將該服務設定為系統啟動時自動啟動
sudo systemctl enable myTest.service
2、關閉對應的服務
1)、 查詢對應服務的狀態:
sudo systemctl status myTest.service
2)、如果服務正在執行則將其停止
sudo systemctl stop myTest.service
3)、禁用該服務
sudo systemctl disable myTest.service
4)、刪除對應的服務檔案 xxx.service
sudo rm -rf /etc/systemd/system/myTest.service
5)、重新載入systemd
配置檔案,使修改生效
sudo systemctl daemon-reload