我正在尝试使用磁带设备提取文件tar
并收到 IO 错误:
tar: /dev/nst0: Cannot read: Input/output error
然而,tar
无论如何都会尝试继续:
tar: Skipping to next header
有没有办法tar
在第一次出现错误后直接退出Cannot read
?我查阅了手册页和tar
手册,但没有找到类似的东西。或者有没有办法在调用 shell 中捕获错误消息并tar
从外部终止?
操作系统是 Ubuntu 16.04,内核为 4.4.0-38,tar
GNU tar 为 1.28。
答案1
您可以使用期望脚本:
#!/usr/bin/expect -f
# Timeout: 10000 seconds
set timeout 10000
spawn tar your tar args come here
# spawn custom-tar-script.sh
expect "tar: /dev/nst0: Cannot read: Input/output error"
send_user "Will kill PID <[exp_pid]>.\n"
exec kill [exp_pid]
# exec killall tar
# exec custom-kill-script.sh
close
(根据您的需要进行调整)