スクリプトを使用して仮想マシンのイメージファイルを圧縮しようとしていますが、ファイルがアクセスされていないことを確認したいと思います。 virt-managerが実行されているかどうかを確認できます。これは、イメージにアクセスする唯一のプログラムである必要があるためですが、それを行うためのより良い方法があるかどうかはわかりません。また、ファイルを圧縮できるようになるまで、スクリプトで試行を続けたいと思います。どうすればいいのかもわかりません。
#Check if virt-manager is running
if pgrep "virt-manager" > /dev/null
then
#re-run script until success
else
gzip -k < /home/brady/.vms/windows10/hdd.img > /media/backup/vms/windows10/hdd.$(date +"%F.%T).img.gz
承認された回答:
lsof
コマンドは、ファイルが使用中であるかどうかを教えてくれます。あなたはそれをwhile
に入れることができます sleep
でループする 頻繁にチェックするようにします。
例:
ウィンドウ1では、sleep 10000 > /tmp/x
を実行できます。
ウィンドウ2で、次のスクリプトを実行します。
#!/bin/bash
FILE=/tmp/x
while [ -n "$(lsof "$FILE")" ]
do
sleep 1
done
echo "File $FILE not in use"
ここで、control-C
を押すと sleep
を中止するには 1秒ほどで「ファイルは使用されていません」という応答が表示されます。