如何在debian中添加腳本來啟動和關閉?
標題幾乎總結了它。
如何將我的伺服器應用程序的 startup.sh 和 shutdown.sh 添加到 Debian 作業系統的啟動和關閉序列中?
在 Debian 上,服務和應用程序啟動和關閉腳本應該放在
/etc/init.d/
.Debian 提供了一個範例腳本
/etc/init.d/skeleton
,您可以根據您的特定應用程序的喜好對其進行修改。一旦到位,請致電:
# update-rc.d YOURAPP defaults
要讓 Debian
/etc/rc?.d/
為您添加符號連結。如果您更喜歡菜單或圖形界面,請查看
sysv-rc-conf
orksysv
包。
自 Debian Jessie 以來,舊
init
程序已被**systemd
**.自己檢查一下。執行:
ls -l /sbin/init
看看它指向什麼。現在它指向systemd
(/sbin/init -> /lib/systemd/systemd
),一個更新更好的初始化程序。所以這裡的選擇和其他答案現在已經過時了
*雖然您仍然可以使用 System-V 工具以舊方式安裝腳本,但一般來說這不是一個好主意。
man systemd.service
說:*如果以特定名稱請求服務但未找到單元配置文件,systemd 會查找具有相同名稱的 SysV 初始化腳本……並從該腳本動態創建服務單元。這對於與 SysV 的兼容性很有用。請注意,這種兼容性非常全面,但不是 100%。
對於較新的 Debian 系統(即 Jessie、Stretch、Buster 等…)
這比你想像的要容易。(-:
這是安裝啟動或關閉程序的新的首選方法。
與
systemd
你首先要創建一個單元文件。單元文件主要是聲明,而不是程式碼。然後,您將使用該**
systemctl
命令啟用或啟動**該單元。
systemd
為您完成大部分工作,例如,讓關鍵程序在崩潰或被終止時自動重新啟動變得容易。此外,它還會在預設情況下在何時何地關閉您的程序,而無需您做任何額外的工作。從這裡開始了解
systemd
:手冊頁開始:
man systemd.unit
– 關於一般的單元文件
man systemd.service
– 關於服務單元文件,例如守護程序和單次執行程序。
man systemctl
– 命令行使用者界面
man journalctl
– 查看 systemd 所做的日誌
man systemd
– 關於init程序本身還有多種其他類型的單元文件,例如
man systemd.target
- 用於組和常見的同步目標。一旦你消化了上面的基礎知識,然後深入研究
man -k systemd
以找到其他相關的手冊頁。無論你做什麼,在 Debian 上都不要使用這些:
update-rc.d
–安裝和刪除 System-V 風格的初始化腳本連結sysv-rc-conf
– SysV 的執行級配置,如初始化腳本連結runlevel
– 列印以前和目前的 SysV 執行級別BUM
– Boot U p Manager - 一個圖形化的執行級別編輯器systemadm
– systemd 系統和服務管理器的圖形前端(順便說一句,作者通過電子郵件告訴我它現在太壞了。)
一個例子:
這個單元文件在我啟動時啟動 NoIP.com 守護程序,並在我關閉時將其關閉。
這個守護程序會不時發送我目前的 IP 地址來更新我的 DDNS(**動態***DNS** (域名伺服器)**)*提供商的數據庫,從而使我的域名始終指向我的電腦,無論它去往何處。
此單元文件位於我係統上的此設置文件中:
/etc/systemd/system/noip2.service
這是單元文件中的內容:
# Comments can only go at the beginning of the line! [Unit] Description=Start the NoIP IP update daemon. This runs every 30 minutes and reports our current IP to NoIP.com to update Love2d.ddns.net. Documentation=https://no-ip.com/ Documentation=file:///nobak/Installers/NoIP/noip-2.1.9-1/README.FIRST [Service] # 'forking' because process returns after starting daemon (traditional unix daemon). Type=forking # This program runs and returns, leaving the running daemon ExecStart=/usr/local/bin/noip2 # Be in no hurry to start this. Max nice is +19. Nice=15 # If it dies for any reason, then restart it Restart=always [Install] # Installs a hook to use this unit file when the system boots or shuts down WantedBy=multi-user.target
手動執行一個單元文件,(例如用於測試):
- 開始
$ sudo systemctl start noip2
。_$ sudo systemctl restart noip2
重新啟動。- 停止
$ sudo systemctl stop noip2
。_配置系統在啟動或關閉時自動執行一個單元文件:
- 開始使用
$ sudo systemctl enable noip2
。- 結束使用with
$ sudo systemctl disable noip2
。查看日誌
$ sudo journalctl -u noip2