バックグラウンドで複数のスクリプトを実行してすぐに返す

バックグラウンドで複数のスクリプトを実行してすぐに返す

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と似ていますかnohupnohup各スクリプトに新しい行を追加しますか?これにより制御権の返却が遅れるのか?

他の実行可能なbashファイルに委任したい場合は、nohupこれらのすべてのコマンドを新しいbashファイルにコピーしてすぐにWifi管理者に制御を戻すことはできますか?これははるかに優れていませんか?どうすればいいですか?

答え1

ルビーのノーヒップに似ていますか?各スクリプトに新しいnohup行を追加しますか?これにより制御権の返却が遅れるのか?

設定したパターンは、nohupバックグラウンドでコマンドを使用し&てPIDを$!ファイルに書き込むことです。これは、この種の作業に使用される一般的なパターンです。

引き続きこのモードを使用し、この方法で開始するすべてのプロセスをバックグラウンドに設定し、そのPIDをファイルに書き込みます。

これを他の実行可能なbashファイルに委任するには、nohupコマンドをすべて新しいbashファイルにコピーし、すぐにWifi管理者に制御を戻すことはできますか?これははるかに優れていませんか?ではどうすればいいですか?

はい、これらすべてのコマンドを別のスクリプトに移動し、1回の呼び出しで呼び出すことができます。これが良いか悪いかを言うのは難しいです。これはすべて達成する目標と管理方法によって異なります。

これを行う方法については、すでに何をすべきかを知っているようです。すべてをスクリプトに入れて、WiFiマネージャアプリケーションで呼び出します。

一部のパラメータをスクリプトに渡す必要があるかもしれません。これを行うには、次のようにこのスクリプトを呼び出すだけです。

my_sub_cmd.bash $arg1 $arg2

$1次に、等を介してそのコマンドに$2コマンドライン引数を渡します。

関連情報