Portál AbcLinuxu, 18. dubna 2024 20:40
Již delší dobu pátrám, jak ověřit, zda je v páskové mechanice vložena páska. Nevěděl by někdo jak na to? Příkaz mt ani eject to (pravděpodobně) neumí.
Systém: Debian Lenny
Mechanika: HP StorageWorks Ultrium 448
Řešení dotazu:
mt status to opravdu nerozpozná?
Já si pásku kontoluju tak, že si pomocí dd přečtu pár prvních Byte a ještě si z nich vyříznu zkratku dne, kterou si tam zálohovací software zapisuje. Takže rozpoznám i zda tam zůstala páska ze včerejška. Pokud to hodí IO error nebo něco takového, tak tam páska není.
Při zadání příkazu mt status /dev/st0 to zůstane "viset". Zrovna tak při dd. Co mě trochu zaráží a v čem by mohl být problém, je to, že na mechanice svítí kontrolka Ready i když mám pásku vyndanou... Zrovna tak se mi nerozsvítí ani kontrolka Tape, pokud pásku vložím...
Zatím jsem dal dohromady toto:
if eject /dev/st0 -q -t &>/dev/null; then echo "inserted"; else echo "empty"; fi
Přiznávám, že je to ale doslova prasárna.
Co to přesně dělá?
eject /dev... -q -t provede vložení pásky, pokud je vysunuta. Pokud se mu to nepovede, dojde k I/O error. Zbytek si každý domyslí sám...
Co je na tom ošklivé?
Mechanika se snaží pásku několikrát vložit než to vzdá...
Lepší nápad?
Sem s ním!
Napadlo mne tTrošku lepší řešení, které zbytečně neopotřebovává mechaniku, ale pořád je to stejně obcházení něčeho, co by mělo jít lépe:
mt -f /dev/st0 status &>/dev/null &
pid=$!
sleep 2
if [ $(ps --pid $pid | wc -l) -gt 1 ]; then
echo "empty"
kill $pid
else
echo "probably inserted"
fi
Tiskni Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.