GNU/Linux >> Znalost Linux >  >> Linux

Shell Script:Stav „pokud se soubor nepoužívá“?

Snažím se komprimovat soubor obrazu virtuálního stroje pomocí skriptu, ale chci se ujistit, že k souboru není přístup. Mohl bych zkontrolovat, zda běží virt-manager, protože by to měl být jediný program, který přistupuje k obrazu, ale nevím, jestli existuje lepší způsob, jak to udělat. Také chci, aby skript pokračoval v pokusech, dokud nebude soubor dostupný ke komprimaci. Taky nevím, jak to udělat.

#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

Přijatá odpověď:

lsof příkaz vám může říci, zda je soubor používán. Můžete to vložit do while smyčka s sleep aby se to kontrolovalo tak často.

Například:

V okně 1 můžete spustit sleep 10000 > /tmp/x

V okně 2 spusťte tento skript:

#!/bin/bash

FILE=/tmp/x

while [ -n "$(lsof "$FILE")" ]
do
  sleep 1
done

echo "File $FILE not in use"

Nyní, když stisknete control-C přerušit sleep během jedné sekundy uvidíte odpověď „Soubor se nepoužívá“.


Linux
  1. Změna obsahu souboru pomocí shell skriptu

  2. Příkaz Linux pro kontrolu, zda je spuštěn skript shellu nebo ne

  3. přesunout pouze v případě, že soubor existuje ve skriptu shellu

  1. Jak spustit soubor bez přípony .sh v shellu

  2. Zjistěte, zda soubor existuje nebo ne v HDFS pomocí skriptu shellu

  3. Může být soubor .sh malware?

  1. Shell skript pro přesun nejstarších souborů?

  2. Jak zkontrolovat podřetězec v Shell Script Bash?

  3. Otevřete Vim ze skriptu prostředí Bash