Bash コマンドは、cronie によって実行されると非同期的に実行されます。

Bash コマンドは、cronie によって実行されると非同期的に実行されます。

私のラズベリーパイをバックアップするbashスクリプトがあります。バックアップコマンドを実行した後、マイコンピュータをシャットダウンする必要があります。これは、コマンドラインでスクリプトを実行すると機能します。ただし、cronieが実行されると、バックアップが完了するのを待たずにすぐにシャットダウンコマンドに移動します。

この問題についてどうすればよいですか?

シェルスクリプト:

#!/bin/bash

ssh [email protected] dd if=/dev/mmvblk0 bs=1M | gzip -c > /path/to/backup/$(date -I) && systemctl poweroff

答え1

sshただバックグラウンドで実行されているようです。実際に接続してすぐにssh終了できない場合は、gzipすぐに終了する結果も発生します。ただし、パイプの終了コードは最後のコマンドの終了コードであるため(set -o pipefail以前に使用されていない場合)、closeコマンドが実行されます。

そのユーザーのデフォルトファイルにないSSHキーを使用するには、ssh次のオプションを使用してキーファイルに通知する必要があります-i

ssh -i /home/user/.ssh/id_rsa [email protected] dd if=/dev/mmvblk0 bs=1M

関連情報