在特定时间间隔后停止 Bash 脚本 [重复]

Posted

技术标签:

【中文标题】在特定时间间隔后停止 Bash 脚本 [重复]【英文标题】:Stop Bash Script after a Particular Interval [duplicate] 【发布时间】:2018-05-10 13:50:16 【问题描述】:
#!/bin/bash
ls -l /bin/bash
ls -l /sbin/bash
ls -l /usr/local/bin/bash
ls -l /usr/bin/bash
ls -l /usr/sbin/bash
ls -l /usr/local/sbin/bash

运行此脚本后,如果时间超过 60 秒,我想停止此脚本。 假设第一个命令在 10 内执行,第二个命令需要 50 秒后我必须停止脚本的执行。

【问题讨论】:

为什么脚本需要超过 60 秒?这些只是几个ls 命令。 @hek2mgl 有趣的地方。假设是这样。 如果其中一个目录非常大,在某些平台(至少是 Linux)上可能需要很长时间。系统调用是非阻塞的,所以超时不一定能中断它。 它只是一个例子..命令会改变..在现实世界场景中 那么不好的例子。 【参考方案1】:

使用timeout(1)

timeout 60 ./your_script.sh

或者事后杀死它:

./your_script.sh & :
sleep 60 && kill $!

【讨论】:

没有超时? @NicK 不。我不知道别的。也许事后杀了它。 我不是 linux 专家,这就是我面临这个问题的原因......我知道第一行捕获当前时间的方式,并在执行每个命令后检查是否超过预期时间.杀死进程.. 杀死命令也在每个命令的 else 部分。

以上是关于在特定时间间隔后停止 Bash 脚本 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在mvc 4中的特定间隔后重复调用方法[关闭]

使用 jQuery 在特定时间间隔显示和隐藏 div

如何在 Xamarin Droid 项目中重复特定时间间隔的警报?

秒表的使用方法 秒表有几种计时方式

在python中以特定间隔运行任务[重复]

使用cordova本地通知和离子设置重复间隔的特定数据和时间