Остановите команду 'shred' в сценарии bash, если она обнаружит ошибки

У меня есть рабочая станция, которую мы настроили для очистки нескольких жестких дисков. Я запускаю сценарий, который обнаруживает жесткие диски, а затем запускаю команду «уничтожить» на каждом из них. Проблема в том, что если какой-либо из жестких дисков выйдет из строя (когда Ubuntu больше не видит диск) во время работы 'shred', вместо остановки, 'shred' будет выводиться в бесконечность со строкой за строкой этого:

shred: /dev/sdd: error writing at offset 103456287104: Input/Output error

Я не 'не вижу никаких опций для' shred ', позволяющих ему выйти, если он обнаружит ошибки, и я, очевидно, не хочу, чтобы скрипт просто запускался вечно с ошибкой ввода-вывода. Так как «shred» не остановится сам по себе при обнаружении этой ошибки, что-то еще должно быть запущено параллельно, чтобы выполнить какую-то проверку ошибок. В моем сценарии подробный вывод «shred» перенаправлен в файл журнала, и я фактически использую этот файл журнала для проверки успешного завершения «shred» в другой части сценария. Но я не уверен, как постоянно проверять этот файл журнала , пока «shred» все еще работает.

У кого-нибудь есть идеи, как я могу выполнить такую ​​«параллельную проверку ошибок»?

Я знаю, что команда wipe завершается, когда обнаруживает ошибки ввода-вывода, но по независящим от нас причинам мы ограничивается использованием «измельчения». Отчасти досадно, что «клочок» не делает то же самое. Казалось бы, ничего страшного, если бы он останавливался при ошибке, но ... это не так.

Это «измельчающая» часть моего скрипта:

#!/bin/bash
log=/root/sanilog.txt
## get disks list
drives=$(lsblk -nodeps -n -o name |grep "sd")
for d in $drives; do
     shred -n 3 -v /dev/$d >> $log 2>&1
done
3
задан 12 December 2019 в 21:18

1 ответ

set -e в начале сценария bash приведет к завершению сценария, если какая-либо команда вернет ненулевой код выхода.

вы также можете попробовать ловушку EXIT , чтобы сценарий убирал за собой


, если не возражаете, попробуйте альтернативу do shred , dd ] может сделать аналогичную работу:

dd if=/dev/urandom of=/dev/sdd bs=4096

дайте ему два прохода, если вы параноик :)

и ubuntu также имеют wipe

wipe /dev/sdd

wipe многократно перезаписывают специальные шаблоны в файлы, которые будут уничтожен, используя вызов fsync () и / или бит O_SYNC для принудительного доступ к диску. В обычном режиме используется 34 шаблона (из них 8 - случайный).

0
ответ дан 5 February 2020 в 18:18

Другие вопросы по тегам:

Похожие вопросы: