&が与えられても、他の呼び出されたスクリプトはバックグラウンドに移動しません。

&が与えられても、他の呼び出されたスクリプトはバックグラウンドに移動しません。

スクリプトが2つあります。

script2、およびコマンドの組み合わせを使用して、一度に16個のファイルを圧縮する内部でmyを呼び出します。デフォルトでは、ファイルが存在することを確認した後、次のプロセスを実行する統合ファイルウォッチャースクリプトです。 (クローナではない)sh scriptpath/script2.sh &script1findxargsgzip

引用:https://it.toolbox.com/question/file-watcher-script-070510

find ${Filepath}/ -maxdepth 1 -type f -name "${Pattern}" -print0 | xargs -0 -t -n 1 -P 16 gzip > /dev/null

私のスクリプト2を呼び出した後、上記のコマンドで中断されます。

上記のコマンド状態でScript1セッションが閉じられ、script2のシェルが開いています。フォアグラウンドではなくバックグラウンドで実行するには、2番目のスクリプトのgzipコマンドが必要です。

Script1 - 複数のファイルを生成します。 script2で使用する変数のエクスポート

その後、script2が呼び出されsh script2 needed parameters &(アンパサンドがscript2を背景にプッシュします)、script1完了しますが、スクリプト2がタッチファイルを見つけた後は完了しません。実行が開始されます。ただし、タッチファイルが見つかると、実行プロンプトがscript2前面に表示されます。gzip

Script2 を呼び出す前に生成された Script2 Gunzips ファイル

fileflag=0
timer1=0
check_interval=300 # check every 5 minutes
(( check_interval_minutes=${check_interval}/60 ))
while [ ${timer1} -lt 180 ]
do
if [ -f /path/to/my/file ]
then
find ${Filepath}/ -maxdepth 1 -type f -name "${Pattern}" -print0 | xargs -0 -t -n 1 -P 16 gzip > /dev/null
else
sleep ${check_interval}
fi
(( timer1=${timer1} ${check_interval_minutes} ))
done

ベストアンサー1

xargs -tWrite.Yoursには何の効果stderrもありません。したがって、バックグラウンドプロセスで端末に書き込むのは一般的に悪い考えです。> /dev/nullstderr

おすすめ記事