【问题标题】:for loop - execute file every 2 hr, output--> ssh "new server" execute output commandfor 循环 - 每 2 小时执行一次文件,输出 --> ssh "new server" 执行输出命令
【发布时间】:2015-03-17 19:23:49
【问题描述】:

我将使用以下脚本来获取磁带存档。每个文件将需要 2 小时的时间来归档。

在这种情况下,我需要将所有文件的睡眠时间保持为 2 小时。并且应该根据输入ssh到服务器并开始执行输出命令以获取存档。一旦 2 小时完成,下一个文件应该开始执行

/root/scripts/list(文件)

/DATA/DataToTape/JAN_1991/
/DATA/DataToTape/JAN_1992/
/DATA/DataToTape/JAN_1993/
/DATA/DataToTape/JAN_1994/
/DATA/DataToTape/JAN_1995/
/DATA/DataToTape/JAN_1996/
/DATA/DataToTape/JAN_1997/

只是我尝试过但无济于事--------------

#!/bin/bash
echo " pls enter sleep time:"
read sleep
echo "pls enter server to take archive"
read server
for i in $(cat /root/scripts/list)
path=$i
output=$(nohup dsmc arch $path -subdir=yes > /tsm/backuplogs/$(basename $path)_\`date +%d%m%y_%H_%M\`.log &) 
ssh "$server $output"
done

【问题讨论】:

  • 您的脚本有什么问题?
  • 为什么需要睡觉?为什么不让 dsmc 命令在前台运行?那么 ssh 命令只会在 dsmc 完成后运行
  • 我只有 7 个驱动程序要存档。每次存档需要 7 个驱动器。在这种情况下,我有 200 个文件要存档。一旦我需要执行归档命令 2 小时。还有其他方法吗?
  • @FuriousGeorge ./archive2.in:第 7 行:意外标记附近的语法错误 path=' ./archive2.in: line 7: path= $i'

标签: linux bash shell for-loop ssh


【解决方案1】:

在“for”循环之后需要“do”。这将解决上述 cmets 中的问题:

for i in $(cat /root/scripts/list); do

【讨论】:

    猜你喜欢
    • 2017-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 2021-11-08
    • 1970-01-01
    相关资源
    最近更新 更多