我有一个工作站,我们设置它来清理多个硬盘驱动器。我运行一个脚本来检测硬盘,然后在每个硬盘上运行“shred”命令。问题是,如果任何硬盘驱动器在“shred”运行时发生故障(Ubuntu 不再看到该驱动器),“shred”将逐行输出到无穷大,而不是停止:
shred: /dev/sdd: error writing at offset 103456287104: Input/Output error
Run Code Online (Sandbox Code Playgroud)
我没有看到任何“shred”选项可以让它在遇到错误时退出,而且我显然不希望脚本在 I/O 错误的情况下永远运行。由于“shred”在遇到此错误时不会自行停止,因此必须并行运行其他程序来进行某种错误检查。在我的脚本中,我将“shred”的详细输出重定向到日志文件,并且实际上使用该日志文件来检查脚本另一部分中的“shred”是否成功完成。但我不确定如何在“粉碎”仍在运行 时连续检查该日志文件。
任何人对我如何完成这种“并行错误检查”有任何想法吗?
我知道“wipe”命令在检测到 I/O 错误时会退出,但由于我们无法控制的原因,我们仅限于使用“shred”。令人沮丧的是“粉碎”并没有起到同样的作用。让它在错误时停止似乎是理所当然的事情,但是……事实并非如此。
这是我的脚本的“粉碎”部分:
#!/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
Run Code Online (Sandbox Code Playgroud)