我想timeout
在一小时后杀死一个脚本。
在我运行的 debian 上timeout 1h <script>
,它可以正常工作。
在我的 Arch linux 机器上,情况有所不同。在尝试了一些东西之后,我想我发现问题在于我的超时二进制文件不使用实际的系统时间,而是 CPU 时间。我想超时使用的脚本wget
显然不会占用大量 CPU 时间。一个timeout 3600 wget
命令在被终止之前最多可以运行半天。
timeout 5 dd if=/dev/zero of=/dev/null
但是在 6.6 秒的时钟时间(5.1 秒的 CPU 时间)后被杀死。
我找不到timeout
二进制文件(澄清:不在我的系统上,我的意思是在网上下载),基本上每个来源都说“它带有 linux”。我timeout
没有--version
or --help
,不管它只是这么说的:
Usage:
timeout [-t timelimit] [-m memlimit] [-x hertz] command [arguments ...]
Died at /usr/local/bin/timeout line 29
我是否有一个搞砸的二进制文件?根据man timeout
,版本和帮助选项都应该可用。既然timeout
是linux核心的一部分,我该如何重新安装呢?
回顾最初的帖子及其评论,听起来这个问题与存在的超时二进制文件的两个不同副本有关。一进一
/usr/local/bin
进/usr/bin
。将其中一个或另一个移出,您的外壳不会查找二进制文件,应该有助于确定哪个是哪个。假设
/usr/bin
更有可能用于系统二进制文件,那么其中的一个/usr/local/bin
可能是我们的问题 - 尽管我可能是错的。你可以在 Debian、Ubuntu 和衍生产品上查询你的包管理器:
或 CentOS、RedHat、Fedora、...:
而你的包管理器很有可能对
/usr/local/bin/timeout
.