如何自动终止脚本内命令的无限执行?
Posted
技术标签:
【中文标题】如何自动终止脚本内命令的无限执行?【英文标题】:How to terminate infinite execution of command inside script automatically? 【发布时间】:2019-09-10 04:45:19 【问题描述】:我的 bash 脚本中有一个可以启动无限执行的命令。当它发生时,我想终止该命令的进程并继续执行脚本。
我用谷歌搜索并试图找到重复的答案 - 没有结果:(
"myProgram" 是 bash 脚本中的一个 C 语言简单程序,可将 "*" 打印到 "stars.txt" 文件。
它使用命令gcc myProgram .cpp -o myProgram
编译。
“myProgram”可以开始无限执行,我想在它发生时终止它。
...
./myProgram 2>> log.txt > stars.txt
...
请帮助我解决问题或将我指向有助于获得答案的材料。如果您需要任何其他信息,请询问,我会尽快回复:)
【问题讨论】:
为什么不在程序中处理这个问题? @oguzismail,根据我解决的任务,我无法编辑该程序的代码。 您可以使用计时器并在 shell 脚本中设置超时值。可以分享一下你调用c程序的代码的sn-p吗? sn-p 代码的最小部分是内部问题,这是一个很好的建议,谢谢:) 根据您的建议给出的答案较低。can start infinite execution and I'd like to terminate it when it happens.
什么时候会发生什么?终止程序的具体条件是什么?
【参考方案1】:
您可以使用timeout
shell 命令退出命令并开始执行下一行,以防命令花费的时间超过超时值中指定的时间。
...
timeout 100 ./myProgram 2>> log.txt > stars.txt
...
在上述程序中,如果超过 100 秒,您的 ./myProgram
将退出。
【讨论】:
这个答案将帮助 OP 在超过 100 秒时终止他们的程序。但是,我们(很可能,包括 OP)并不清楚终止条件是什么。 (“可以开始无限执行,我想在它发生时终止它。”)它可能是(1)您解释的时间,(2)产生的标准输出的 X kb,(3)或任何其他事件。只是在此处添加此评论,因为问题太宽泛,并且此答案正确处理了对该问题的一种解释。 即使myProgram
在超时时间内正常终止,此命令也能正常工作以上是关于如何自动终止脚本内命令的无限执行?的主要内容,如果未能解决你的问题,请参考以下文章