2012-01-18 13 views
1

リモートのlinux/OSXがすべての実行レベルを/etc/init.d/*で完了したかどうかを判断するシェルスクリプトが必要です。linux/OSXが完全に初期化されるときを決定する必要があります

私はそれがまだブートしている間に私のvirutalボックスにsshすることができ、/ bin/trueや/ bin/psのようなコマンドを実行することができます。

基本的に私はあなたがそれに興味がある、ランレベルにスクリプトを置くことができ

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

これはなぜ便利だと思いますか? –

+0

私は、Mac上でvirutalのLinuxボックスで動作するいくつかの本当に面倒な開発作業をしています。 IDEを起動する前に、特定のプロセスをVM上で起動して実行する必要があります。その後、私は私のIDEを起動することができます。それは本当に私は自分のデスクトップに座っている必要があることを吸う毎日同じボタンとウィンドウをクリックして私はすべてのコーヒーを得るためにいくつかのスクリプトを設定することができます –

+0

あなたはそれらのプロセスが実行されているとき、 。 –

答えて

4

する必要性は、それを示すために、どこかのファイルに触れる実行するための最後とシャットダウンする最初のものです実行しました。

たとえば、S99finishedというスクリプトを作成して実行レベルのフォルダに入れると、その実行レベルで最後に実行されます。シャットダウン時に対応するK00finishedが最初に実行されます。

S99finishedは次のようになります:

#!/bin/bash 
touch ~/.init_finished 

K00finishedのようなものになります:

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

~/.init_finishedが、それは陽気な方法だ上でそれが行くと、その時点で存在していたまで、その後、あなたの起動スクリプトは、ポーリングします。

起動スクリプトはrootとして実行されるため、ホームディレクトリチルダを使用すると、rootのホームに置かれます。それはあなたがやっていることにはおそらく理想的ではありませんが、そのポイントを示しています。 /var/logやそれ以外の一般的なポーリングの場所に入れるのと同じくらい簡単です。どこにでも誰でもアクセスできるようにする必要があります。

+0

あなたはK00finishedを意味すると思います。 –

+1

あなたは間違っている、愚かなタイプミスです。ありがとう。 – tpg2114

関連する問題