【问题标题】:Bash parallel processing - Limiting total runtimeBash 并行处理 - 限制总运行时间
【发布时间】:2014-08-14 20:50:30
【问题描述】:

我认为我想做的事情相当简单;我想将 callSite 函数的总运行时间限制为 x 秒;因为我只希望它运行,而不一定要连接。这部分将在我项目的后期处理。

我认为我需要做的是终止 callSite 的进程,但是当使用计时器作为并行运行的循环时,我遇到了一些问题。

    #!/usr/bash
    function timer {
            for ((i=$1; i>0; i--)); do
            printf "\rScript will finish in $i seconds."
            read -s -n 1 -t 1 key
            if [[ $key ]]
            then
                break
            fi
        done

}

function callSite {
      sudo minicom Cisco -d $1
      #configuration for the modem dialing program
}



 timer 60 & callSite Boston && fg
 #this is where one would enter the desired runtime of the process

您建议我如何将计时器和 minicom 绑定在一起,以便在经过指定的时间后终止 minicom 进程?

【问题讨论】:

  • execute function with timeout 的可能重复项
  • 这实际上取决于你如何#configuration for the modem dialing program
  • @konsolebox 我为调制解调器拨号程序存储的唯一配置只是程序映射到的串行端口。我将它声明为一个函数,这样我就不必每次都在我的脚本中调用该命令,因为我计划在同一个脚本中多次复制它以拨出到不同的站点。
  • @Emilien 谢谢!我能够通过使用 timeout 命令得到我想要的。
  • @rwaweber 我的意思是sudo minicom Cisco -d $1 不会在前台运行并停止脚本,然后再运行它之后的命令?

标签: linux bash parallel-processing modem


【解决方案1】:
(
    callSite Boston &
    PID=$!
    timer 60 && kill "$PID" &>/dev/null
) &

【讨论】:

  • 我能够通过使用 timeout 命令完成同样的事情,如下所示(root 时): timeout 60s minicom Cisco -d Boston
猜你喜欢
  • 2010-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-12
相关资源
最近更新 更多