This articles is published 1306 days ago and last updated 1278 days ago, some information may be out of date.
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.target
Service Unit 常用命令
開機啟動
systemctl enable daemon
關閉開機啟動
systemctl disable daemon
啟動服務
systemctl start daemon
停止服務
systemctl stop daemon
重啟服務
systemctl restart daemon
查看服務狀態
systemctl status daemon
結束服務進程(服務無法停止時)
systemctl kill daemon
結語: |
在多種方法中建議使用Systemd 的系統啟動服務,因為Systemd 已成為大多數發行版的標準配置。
參考資料: |