2012-01-18 37 views
1

我需要一個shell腳本方式來確定遠程linux/OSX何時完成了/etc/init.d/*所有運行級別的運行。需要確定何時完全初始化linux/OSX

因爲我知道我可以在我的網絡上啓動並運行像/ bin/true或/ bin/ps這樣的命令,但它並不處於需要的狀態。

基本上我需要

while [ ${INIT_STILL_RUNNING_ON_REMOTE_SYSTEN} ] 
do 
    sleep 30 
done 
ssh [email protected]:command 
+4

你爲什麼認爲這很有用? – 2012-01-18 19:07:06

+0

我有一些非常惱人的開發東西,在我的mac上運行在virutal linux上。在啓動我的IDE之前,必須先啓動並運行虛擬機。之後,我可以啓動我的IDE。這真的很糟糕,我必須坐在我的桌面上,每天點擊相同的按鈕和窗口,當我可以設置一些腳本來開始一切去獲得我的咖啡 – 2012-01-18 19:10:16

+0

聽起來像只需要知道這些進程正在運行,然後解決問題。 – 2012-01-18 19:17:51

回答

4

你可以把一個腳本在運行級別您有興趣的是要運行的最後一件事,並首先要關閉觸及文件的地方,以表明它已經運行。

例如,如果您創建了一個名爲S99finished的腳本並將其放入運行級別文件夾,它將在該運行級別上最後運行。關機時,相應的K00finished將首先運行。

S99finished可能類似於:

#!/bin/bash 
touch ~/.init_finished 

K00finished可能類似於:

#!/bin/bash 
if [ -e ~/.init_finished ]; then 
    rm ~/.init_finished 
fi 

然後你的啓動腳本會詢直到~/.init_finished存在此時它會去很快樂的方式。

請注意,啓動腳本以root用戶身份運行,因此使用主目錄tilde會將其放入root主目錄。這可能對你所做的並不理想,但是可以說明這一點。將它放在/var/log或其他常用來查詢的地方很容易。只要記住,無論你在哪裏堅持,它都必須具有讀取權限。

+0

我認爲你的意思是K00已完成。 – 2012-01-18 19:31:43

+1

你是對的,愚蠢的錯字。謝謝。 – tpg2114 2012-01-18 19:37:50