У меня есть сценарий bash, который я запускаю с DVD. Этот скрипт копирует многотомные tar-файлы с DVD на локальный компьютер. Напротив копирования, сценарий предлагает пользователю вставить второй DVD, после чего копируются остальные файлы. Сценарий существует на первом DVD, но не на втором.Вывод сценария Bash без ошибок
Этот сценарий просто останавливается после копирования последнего файла, но до запуска операции множественного размножения tar и последующей обработки. Сообщения об ошибках и сообщениях не сообщаются. Я попытался запустить bash с '-x', но нет ничего подозрительного - даже инструкции выхода. Еще более печальным является тот факт, что это поведение непоследовательно. Иногда сценарий останавливается, но в других случаях он будет продолжать без проблем.
У меня есть сценарий на скрипте. После завершения операций копирования, я вижу это:
read(255, "\0\0\0\0\0\0\0\0\0\0"..., 5007) = 1302
read(255, "", 5007) = 0
exit_group(0) = ?
Я знаю, что Баш читает файл сценария в память и выполняет его оттуда, но это возможно, что он пытается повторно прочитать файл сценария в какой-то момент и неудача (поскольку он больше не существует)? Файлы tar довольно большие, и это занимает приблизительно 10-15 минут с момента начала сценария до момента копирования последнего файла (со второго DVD).
Есть ли что-нибудь в dmesg, чтобы предположить, что у вас закончилась память или что-то в этом роде? То, что я хотел бы попробовать, - это изменить сценарий, чтобы скопировать себя в локальное хранилище и выполнить его оттуда. – timmins
Спасибо за предложение. Я проверю dmesg. Я на самом деле думал о копировании сценария в/tmp, а затем повторного вызова его оттуда. Моя единственная проблема заключается в том, что родительский скрипт все еще выполнялся с DVD. Предположительно, bash не попытался бы перечитать родительский скрипт до тех пор, пока не завершится дочерний скрипт (после чего я все равно сделаю). – LousyG
Я просто смог воспроизвести его. Ничего в dmesg.Интересно, что я воспроизвел его при запуске «cat/dev/zero>/dev/shm/file» и открыл очень большой файл журнала в vi, пытаясь использовать как можно больше памяти (я добрался до 32M бесплатно!) , Я не уверен, вызвали ли это это, или мне просто повезло, но это стоит отметить. Я собираюсь изменить сценарий, чтобы скопировать себя в/tmp, а затем снова запустить его оттуда. Затем я перепробою. Посмотрим, что произойдет. – LousyG