Linux

啟動時的 Bash 腳本?(Linux)

  • May 16, 2011

有什麼方法可以在重新啟動時製作/執行 bash 腳本(例如在 Debian/Ubuntu 中,因為這就是我家裡的 2 個盒子所擁有的)

另外,有什麼推薦的做 cron 工作的指南嗎?我對他們完全陌生(但他們會很有用)

在 Ubuntu/Debian/Centos 上,您可以設置一個 cron 作業來執行 @reboot。這在系統啟動時執行一次。使用 crontab -e 編輯 crontab 並添加如下例所示的行,例如

@reboot /path/to/some/script 

如果您尋找它們,那麼 cron 有很多資源。這個網站有幾個很好的例子。

在許多*nix平台上啟動時啟動某些東西的另一種典型方法是(或者,我認為這可能開始不受歡迎——參見替代方案)將腳本放在一個目錄中,根據特定的作業系統/發行版,可能是之類/etc/rc2.d的東西(不同的發行版使用不同的“執行級別”,這是數字的來源——請參閱下面的連結)。通常,它們也被符號連結到文件中或文件中,以便更容易手動執行,並且它們在大多數 *nix 平台中採用“開始”和/或“停止”參數,以及“狀態”、“重新啟動”、在許多 linux 平台上等。在這樣的系統上,這些通常由執行,/etc/rc3.d``/etc/rc/rc3.d``/etc/init.d``init``inittab. 在 *BSD 系統上,類似的概念有不同的風格,而且,如上面連結的,有很多變體。

在上述風格中,例如/etc/rc2.d(對於預設執行級別為 2 的系統)中的腳本通常以字母S或開頭K,然後是兩位數。以 S 開頭的腳本在啟動時按字典順序(通常轉換為數字順序)執行到第 2 級,參數為“start”。關閉時,以 K 為前綴的腳本同樣執行,參數為“stop”。

/etc/init.d(或有時,或其他變體)中的文件/etc/rc/init.d的命名不帶 S 和 K 前綴或數字。通常,各種 /etc/rc?.d 目錄中的文件符號連結到真實文件,通常通過相對路徑前綴引用../init.d/

各種系統上存在各種實用程序來管理這些,以及打開和關閉等等。在 IRIX 上(至少從 IRIX 4 開始,如果我沒記錯的話),它曾經是一個名為 的工具chkconfig,它不會操縱連結,但腳本會檢查它們是否應該執行。我認為IRIX 是第一個具有這種功能的作業系統。後來,在我曾經擁有的某個版本的 RedHat 中,有一個同名的工具,但它的行為有點不同,實際上是管理符號連結——看看chkconfig(8)我認為可能是相同(或非常相似)的版本正如我當時使用的那樣。

在我可以訪問的 Ubuntu 9.04 系統上,它看起來像是update-rc.d要執行的腳本。

如果您在使用 inittab 的系統上,您還可以直接在其中添加內容——這對於您不僅希望在啟動時執行一次,而且還希望(通過)主動監控的內容特別有用initrespawn崩潰或終止。man inittab有關更多資訊,請參閱系統上(如果有)的輸出。和/或man init等。有很多不同的風格,我(目前)對 Debian 或 Ubuntu 都不是很熟悉,所以我不確定要指出什麼,但希望這能給你一些起點.

crontob 中的 @reboot 部分對我來說是新的,但似乎它也可能是一個有用的選項——儘管我建議 init 腳本在許多事情上更可取。但是請參閱man 5 crontab有關您可以在 cron 配置中放入什麼、如何告訴它執行以及何時執行的更多資訊(包括,假設是 Vixie/ISC 版本的 cron [參見cron 歷史] @reboot)。

我希望這會有所幫助。

引用自:https://unix.stackexchange.com/questions/7793