スクリプトを使用して仮想マシンイメージファイルを圧縮しようとしていますが、ファイルにアクセスしていないことを確認したいと思います。 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
ベストアンサー1
この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秒間「ファイルが使用されていません」という応答が表示されます。