Ubuntu 設定開機自啟動指令碼

Jeffxue發表於2024-11-13

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

相關文章