Linux開機啟動多種辦法
| 簡言: |
重啟Linux系統後免於手動啟動對應的程式或內容,可以用幾下幾種方式實現開機自啟動。
| 開機啟動辦法: |
| Crontab 任務: |
crontab 在系統中有一個運行著的守護進程,當系統時間符合某一條規劃記錄時, 守護進程就會啟動相應的任務。可以通過crontab -e來查看任務。
@reboot /usr/local/script.sh使用@reboot 選項來設置開機啟動「script.sh」腳本。
| /etc/rc.local 加入啟動指命: |
你想設置和啟動的東西(如指令或腳本)放到「exit 0」之前
# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.
sh /etc/init.d/mount.sh
exit 0這段內容是設置開機啟動「mount.sh」腳本。
| /etc/init.d 啟動腳本: |
實現服務的啟動、關閉與觀察等方式:
- 啟動:
/etc/init.d/daemon start- 關閉:
/etc/init.d/daemon stop- 重新啟動:
/etc/init.d/daemon restart- 狀態觀察:
/etc/init.d/daemon status| Systemd 服務: |
Systemd 是 Linux 系統工具,用來啟動守護進程。
可實現的優點:
- 平行處理所有服務,加速開機流程。
- 一經要求就回應的 on-demand 啟動方式。
- 服務相依性的自我檢查。
- 依 daemon 功能分類。
- 將多個 daemons 集合成為一個群組。
- 向下相容舊有的 init 服務腳本。
建立系統啟動服務
建立一個系統服務 /etc/systemd/system/my-service.service
[Unit]
Description=My custom startup script
# After=network.target
# After=systemd-user-sessions.service
# After=network-online.target
[Service]
# User=spark
# Type=simple
# PIDFile=/run/my-service.pid
ExecStart=/home/user/startup.sh start
# ExecReload=/home/user/startup.sh reload
# ExecStop=/home/user/startup.sh stop
# TimeoutSec=30
# Restart=on-failure
# RestartSec=30
# StartLimitInterval=350
# StartLimitBurst=10
[Install]
WantedBy=multi-user.target去掉註解#後
[Unit]
Description=My custom startup script
[Service]
ExecStart=/home/user/startup.sh start
[Install]
WantedBy=multi-user.targetService Unit 常用命令
開機啟動
systemctl enable daemon關閉開機啟動
systemctl disable daemon啟動服務
systemctl start daemon停止服務
systemctl stop daemon重啟服務
systemctl restart daemon查看服務狀態
systemctl status daemon結束服務進程(服務無法停止時)
systemctl kill daemon| 結語: |
在多種方法中建議使用Systemd 的系統啟動服務,因為Systemd 已成為大多數發行版的標準配置。
| 參考資料: |