HOTSPOT、CONNECTING、CONNECTEDなどのイベントを提供するWi-Fiマネージャで実行するようにこのbash設定を構成しました。
スクリプトが実行されるまでWifi管理者は一時的に一時停止するので、スクリプトが完了するのを待たずにイベントに基づいてスクリプトを実行してすぐに返したいと思います。
#!/bin/bash
Logfile="/home/arjun/Desktop/bash/logfile.txt"
echo "Started" >> $Logfile
if [ "$1" == "CONNECTING" ]; then
echo "args CONNECTING" >> $Logfile
elif [ "$1" == "HOTSPOT" ]; then
echo "args HOTSPOT" >> $Logfile
kill $(< my_sinatra_server.pid)
elif [ "$1" == "CONNECTED" ]; then
echo "args CONNECTED" >> $Logfile
nohup ~/Desktop/ruby/sinatra/api/api.rb >> /log/file 2>&1 &
echo $! > my_sinatra_server.pid
echo "PID is $(< my_sinatra_server.pid)"
else
echo "Invalid args" >> $Logfile
fi
echo "bye:-)" >> $Logfile
うまく動作していますが、PythonとNodejsスクリプトだけでなく他のスクリプトも実行する必要があります。
どのように追加できますか? Rubyと似ていますかnohup
?nohup
各スクリプトに新しい行を追加しますか?これにより制御権の返却が遅れるのか?
他の実行可能なbashファイルに委任したい場合は、nohup
これらのすべてのコマンドを新しいbashファイルにコピーしてすぐにWifi管理者に制御を戻すことはできますか?これははるかに優れていませんか?どうすればいいですか?
答え1
ルビーのノーヒップに似ていますか?各スクリプトに新しいnohup行を追加しますか?これにより制御権の返却が遅れるのか?
設定したパターンは、nohup
バックグラウンドでコマンドを使用し&
てPIDを$!
ファイルに書き込むことです。これは、この種の作業に使用される一般的なパターンです。
引き続きこのモードを使用し、この方法で開始するすべてのプロセスをバックグラウンドに設定し、そのPIDをファイルに書き込みます。
これを他の実行可能なbashファイルに委任するには、nohupコマンドをすべて新しいbashファイルにコピーし、すぐにWifi管理者に制御を戻すことはできますか?これははるかに優れていませんか?ではどうすればいいですか?
はい、これらすべてのコマンドを別のスクリプトに移動し、1回の呼び出しで呼び出すことができます。これが良いか悪いかを言うのは難しいです。これはすべて達成する目標と管理方法によって異なります。
これを行う方法については、すでに何をすべきかを知っているようです。すべてをスクリプトに入れて、WiFiマネージャアプリケーションで呼び出します。
一部のパラメータをスクリプトに渡す必要があるかもしれません。これを行うには、次のようにこのスクリプトを呼び出すだけです。
my_sub_cmd.bash $arg1 $arg2
$1
次に、等を介してそのコマンドに$2
コマンドライン引数を渡します。