【发布时间】:2014-03-28 13:53:05
【问题描述】:
如果某个进程超过几秒钟,我会尝试终止它。
当我在终端中运行它时,以下工作正常。
timeout 2 sleep 5
但是当我有一个脚本时 -
#!/bin/bash
timeout 2 sleep 5
它说
超时:找不到命令
为什么会这样?解决方法是什么?
--编辑--
在执行类型超时时,它说 -
超时是一个shell函数
【问题讨论】:
-
如果在 shell 中运行
type timeout会得到什么? -
@user657592 您使用的是哪个 bash 版本?并检查
/usr/bin/timeout是否存在 -
如果你运行
type -a timeout,你会得到唯一的timeout吗?通常,如果您在某个地方实现了该函数以在脚本中使用它,则需要导出该函数,但就像@RahulPatil 提到的超时通常只是一个 c 函数,除非您有其他一些实现。 -
@BroSlow - 一样。
timeout is a shell function -
@user657592 将
export -f timeout添加到您的.bashrc或您实施的任何位置。然后重新获取该初始化文件(例如使用source .bashrc)并尝试再次运行脚本。