2つのスクリプトがあります。
私は、とコマンドを組み合わせて使用してファイルを圧縮する内部script2
として、一度に16個のファイルを呼び出しています。これは基本的に、ファイルが存在するかどうかを確認した後、以下のプロセスを実行するために統合されたファイルウォッチャースクリプトです。(cronではありません)sh scriptpath/script2.sh &
script1
find
xargs
gzip
参照: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の後に1つのタッチファイルが見つかります。実行を開始します。しかし、タッチファイルを見つけた後、script2
どこgzip
で実行されているかというプロンプトが前面に出てきています。
Script2スクリプト2を呼び出す前に作成されたGunzipファイル
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
xargs -t
に書き込みますstderr
。あなた> /dev/null
は影響しませんstderr
。したがって、通常は悪い考えであるバックグラウンドプロセスから端末に書き込んでいます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加