nice コマンドの完了後にコマンドを実行します。

nice コマンドの完了後にコマンドを実行します。

niceいくつかのデータベースをダンプし、バックアップ用の資産を圧縮する3つのコマンドがあります。その後、ファイルを別のサーバーにコピーする必要があります。私は次のコマンドを使用しています:

nice mysqldump -u user1 -p'XXX' database1 | gzip > database1.sql.gz
nice mysqldump -u user2 -p'XXX' database2 | gzip > database2.sql.gz
nice zip -r assets.zip /var/www/site1/assets/

cd ..

scp -R backups [email protected]:/home/user/backups

私の問題は、scp良いコマンドが完了する前にコマンドが実行されているようです。これにより部分的なSQLダンプが発生し、時にはzipファイルが破損することがあります。

それでは、ファイルを別のサーバーにコピーする前に、3つのコマンドがすべて完了したことをどうやって確認できますか?

ベストアンサー1

wait組み込みシェルを使いたいです。

バックグラウンドでコマンドを実行し、続行する前にすべてのコマンドが完了するのを待つようにシェルに指示します。以下は非常に基本的な例です。

#!/bin/bash

sleep 6 && echo first sleep  &
WAITPID="$!"
sleep 3 && echo second sleep &
WAITPID="$WAITPID $!"

echo "waiting"
wait $WAITPID
echo "done waiting"

メモ:

  • バックグラウンドプロセスpidはに収集され、WAITPIDリストはに供給されますwait。ジョブ番号も使用できます。
  • このコマンドを実行すると、second sleep最初に完了したことがわかります。

おすすめ記事