我有一个脚本,它通过服务器列表连接到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小时
任何想法或帮助都会非常感激
答案 0 :(得分:0)
尝试使用超时程序:
用法:
timeout [OPTION] DURATION COMMAND [ARG]...
E.g。 time (timeout 3 sleep 5)
将持续3秒。
所以在你的代码中你可以使用:
timeout 300 scp -o StrictHostKeyChecking=no $BACKUP:* .
这会将副本限制为5分钟。