在機器啟動時運行 sh 文件

在機器啟動時運行 sh 文件

我對 Linux 很陌生,想知道如何在電腦啟動時啟動 .sh 檔案。基本上,我有一台裝有 Linux 作業系統的伺服器機器,並且想在系統重新啟動/崩潰時運行一些 jboss 應用程式

S99jBossServers在 rc2.d 中添加了連結/etc/rc.d/init.d/jBossServers.sh並已授予完全權限(777)jBossServers.sh

中的內容jBossServers.sh如下

#!/bin/sh
#
# chkconfig: 2345 80 30 
# description: 
#

RETVAL=0

start () {
    /root/batch/startSikkimCA.sh
    /root/batch/startSikkimSp.sh
}

stop () {
    /root/batch/stopSikkimCA.sh
    /root/batch/stopSikkimSp.sh
    RETVAL=$?
}
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        start
        ;;
    *)
        start
;;
        RETVAL=$?
esac
exit $RETVAL

我不確定它是否正確,但其中引用了兩條路徑

開始()和停止()

是正確的,但應用程式仍然無法在電腦重新啟動時啟動。

答案1

看著在裡面這是傳統的進程啟動器,並在/etc/init.d/etc/rc1.d等下運行腳本/etc/rc.local,這可能是您想要的位置。

一些發行版使用暴發戶相反 - 如果是這樣,請查看文件。

在任何一種情況下,確切的路徑可能會因發行版而異,但這應該足以讓您開始。

答案2

嘗試檢查您的腳本是否正在啟動(例如,但將其放入touch /var/tmp/startup.script其中)。啟動期間腳本中的所有命令都在搜尋補丁中嗎?

運行等級 2 對我來說看起來很不尋常。對於沒有 GUI 的 Linux,3 應該是正常的。您使用什麼發行版和版本?

答案3

/etc/inittab尋找像這樣的線id:3:initdefault:。該數字可能是 3 或 5,但也可能是 2 或 4。它很可能不是 2,因此 rc2.d 中的腳本將不會運行。

將您的腳本放入與該行中的數字相符的 rcN.d 目錄中initdefault

原則上, rc.local 是一個更好的選擇,但是rc.local 因發行版而異(有時它是一個目錄,有時它是一個腳本,有時它根本沒有設定),因此在不知道您的發行版的情況下更容易你把它放在正確的運行等級了嗎?您可以嘗試man rc.local看看您的系統上顯示了什麼。如果您的系統支援 rc.local 作為目錄,那麼將您的腳本放在那裡,不用擔心運行等級。

另外,請確保您的腳本由 root 使用者擁有,並且具有 755(如果您希望任何人都能夠運行它)或 744 的權限。

答案4

新增啟動腳本

此方法適用於 Red Hat、Fedora、Ubuntu(安裝套件 chkconfig 和服務)、Suse。

您應該將腳本複製到 /etc/init.d 中(它是正確的目錄或指向正確目錄的鏈接,因此它的工作方式相同)

sudo cp jBossServers.sh /etc/init.d/
sudo chmod 0755 /etc/init.d/jBossServers.sh

然後需要將其新增至系統啟動進程。不要創建所有必需的鏈接,而是使用 chkconfig (首先在 Ubuntu 上安裝軟體包)

sudo chkconfig add jBossServers.sh

現在閱讀您的腳本標題,該腳本已經包含 chkconfig rgarding 運行級別和優先順序的資訊。所以你很好。下次重新啟動時 JBoos 將啟動。

但你可以嘗試現在就開始

sudo service jBossServers.sh start

注意:如果您的系統抱怨找不到 chkconfig 或服務,請嘗試在之前使用 /sbin/ 呼叫 then 。例子

sudo /sbin/chkconfig add jBossServers.sh
sudo /sbin/service jBossServers.sh start

相關內容