Я пытаюсь извлечь файлы с ленточного устройства с помощью tar и получаю ошибки ввода-вывода:

tar: /dev/nst0: Cannot read: Input/output error

Однако tar все равно пытается продолжить:

tar: Skipping to next header

Есть ли способ сказать tar выйти сразу после первого появления ошибки Cannot read ? Я пробежался по страницам руководства и руководству по tar , но не смог найти ничего подобного. Или есть способ перехватить сообщение об ошибке в вызывающей оболочке и убить tar извне?

ОС - Ubuntu 16.04 с ядром 4.4.0-38, а tar - GNU tar 1.28.

1 ответ1

0

Вы можете использовать ожидаемый скрипт:

#!/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

(Адаптируйте его под свои нужды)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .