在 Linux 開機時自動執行程式或指令,主要有幾種方法,最常見的是使用 Systemd 建立服務(現代主流)、修改 /etc/rc.local 檔案(傳統通用)、利用 cron 的 @reboot 指令,以及在 使用者登入時執行的 ~/.bashrc / ~/.profile 或圖形化桌面環境的 XDG Autostart。選擇哪種方法取決於是在系統啟動時執行(Systemd 服務)、使用者登入時執行(XDG Autostart)或僅在特定使用者登入時執行(~/.bashrc)。
1. 使用 Systemd 服務(推薦用於系統級任務)
這是現代 Linux 發行版(如 Ubuntu, CentOS 7+)管理服務和開機自啟動的標準方式。
- 創建服務檔案:在
/etc/systemd/system/建立一個.service檔案,例如my-app.service。 - 內容:
- 啟用服務:
2. 修改
/etc/rc.local(傳統或簡單任務)適用於舊版系統或只想在開機後期執行簡單指令。
- 編輯檔案:
sudo nano /etc/rc.local。 - 加入指令:在
exit 0之前加入你的指令(使用絕對路徑),例如: - 確保可執行:
sudo chmod +x /etc/rc.local。
3. 使用
cron 的 @reboot適合在每次重啟後簡單執行一個指令。
- 編輯 crontab:
crontab -e。 - 加入指令:
4. 使用者登入時執行 (桌面環境)
- For All Users (login shell):編輯
/etc/profile或/etc/profile.d/中的文件。 - For Current User (login shell):編輯
~/.bash_profile或~/.profile。 - For Current User (open terminal):編輯
~/.bashrc。 - Desktop Entry (GUI):在
~/.config/autostart/放置.desktop檔案,用於啟動圖形化應用程式。
執行權限
- 所有腳本或程式都必須有執行權限,使用
chmod +x /path/to/script.sh。 - 在腳本中建議使用絕對路徑。
總結
- Systemd:管理系統服務,最完整與現代。
rc.local:最簡單,但非標準化,適用於舊系統。@reboot:適合快速重啟後執行一次性任務。.bashrc/ Autostart:針對特定使用者或圖形介面。
沒有留言:
張貼留言