SuSE 完成啟動後如何執行我的腳本?
我希望我的伺服器(通過咆哮)通知我(重新)啟動完成。我已經準備好發出咆哮聲的 php 文件,但我不知道應該在哪個文件中添加該行。
我需要什麼文件來添加我的程式碼以便它僅在 SuSE 啟動完成後執行?
Suse Linux Enterprise 11 SP2(和 openSUSE ?)的更新語法
最好的方法是創建一個 shell 腳本來呼叫你的 PHP 腳本。該 shell 腳本的標題中應包含以下註釋:
#!/bin/sh ### BEGIN INIT INFO # Provides: nothing # Required-Start: $all # Default-Start: 3 5 # Default-Stop: 4 # Short-Description: single_line_description # Description: multiline_description ### END INIT INFO
您可以在
/etc/init.d/skeleton
. 此模板包含掛鉤 PHP 腳本的必要程式碼。您將看到一個必須呼叫 PHP 腳本的起始案例。我在標題中丟棄了一些可選參數,因為您似乎不需要它們。
重要
至少使用 case 語句的骨架(參見init scripts actions)並至少實現 start case 是很重要的。在開始的情況下,這是呼叫你的腳本的地方。
您可以在此處找到一個將在引導結束時呼叫的小腳本範例:請參閱我的 Gist。我為 Default-Stop 設置了無效的執行級別,但不知何故,在關機期間仍會呼叫該腳本。無論如何,“停止”情況下的程式碼被執行,而不是“開始”情況下的程式碼在關閉時被執行。
編寫腳本後,將其複製到
/etc/init.d
假設您的 init 腳本稱為 boot-notification,然後您將執行以下操作(以 root 身份):chown root:root boot-notification chmod 0750 boot-notification mv boot-notification /etc/init.d/
然後你需要在初始化系統中“註冊”腳本。您將使用該
insserv
命令(再次以 root 身份)或者您可以使用 YaST:insserv boot-notification
然後,您可以通過查看每個初始化級別來進一步檢查該腳本是否是最後執行的腳本之一。如果您只選擇執行級別 3,那麼您可以這樣做:
ls -l /etc/init.d/rc3.d/S*
這將返回初始化腳本的連結列表。腳本的連結應位於列表的末尾(或附近)。
注意:如果您想嘗試使用更動態的方式編寫 init 腳本,我建議您閱讀以下 2 頁:
(open)SUSE
/etc/init.d/after.local
用於此目的。只需將需要執行的命令添加到該文件中即可。請注意,這適用於 SystemV init,但對於 systemd,這將需要 AFAIK 需要以不同方式解決。