У меня есть скрипт, который просматривает список серверов для подключения и захватывает с помощью SCP файлы для хранения.
Иногда по разным причинам один из серверов выходит из строя, и мой скрипт зависает примерно на 4 часа, прежде чем двигаться дальше по списку.
Я хотел бы иметь возможность обнаруживать проблему с подключением или период времени, прошедший после запуска скрипта, убить эту команду и перейти к следующему.
Я подозреваю, что это потребует ожидания или сна и продолжения, но я новичок в циклах и bash
#!/bin/bash
#
# Generate a list of backups to grab
df|grep backups|awk -F/ '{ print $NF }'>/tmp/backuplistsmb
# Get each backup in turn
for BACKUP in `cat /tmp/backuplistsmb`
do
cd /srv/backups/$BACKUP
scp -o StrictHostKeyChecking=no $BACKUP:* .
sleep 3h
done
Приведенный выше скрипт работает нормально, но зависает на 4 часа, если возникает проблема с подключением. Стоит отметить, что некоторые переводы занимают 10 минут, а некоторые 2,5 часа.
Любые идеи или помощь будут очень признательны
for B in
cat file; do...
не очень рекомендуется. Лучше сказатьwhile read B; do ... done < file
. - person fedorqui 'SO stop harming'   schedule 17.11.2016