让 shell 脚本命令在一定超时后中止

让 shell 脚本命令在一定超时后中止

我在 Linux shell 脚本中经常遇到这样的情况:如果某个特定命令运行时间过长(例如由于网络问题),shell 脚本应该中止运行该命令。

在 shell 脚本中运行超时命令有哪些最佳实践?例如,通过某种监控命令运行命令,并以秒为单位指定特定最大运行时间?

我正在寻找的是类似“timeout -s 300'此命令行'”的内容

Cron 解决方案是不可能的,也不是可接受的答案。

答案1

有一个名为 timeout 的软件包,基于 Debian,sudo apt-get install timeout。问题是该命令仅在规定的时间内运行,因此如果您正在 ssh 并执行 timeout 300 ssh[电子邮件保护],该任务将在 300 秒后终止。话虽如此,StackOverflow 上有一个类似的问题,其中有一个脚本实现可能会做到这一点。

尽管我昨天再次尝试了这个并且一切正常,所以这取决于其后面跟的命令。

相关内容