linux - 如何为在linux中执行的命令设置命令执行超时
问题描述
我有下面的shell脚本,cmdx是testtool命令,它等到执行,一旦执行完成,下一个命令回显“结束测试”就会执行。
#!/bin/bash
echo "Starting tests"
cmdx
echo "End test"
我需要为 cmdx 设置一些硬编码的执行时间(例如:持续时间 60 分钟)。后 60 分钟 cmdx 应该停止,下一个命令 echo "End test" 应该被执行,你能帮忙我们如何实现这一点吗?
解决方案
有一个timeout(1)命令。
timeout 3600 command arguments...
command
将在 3600 秒后杀死。您可以选择带有-s
选项的信号。
请注意,因为timeout
是外部命令,所以command
必须是外部命令(不能是 shell 函数)。如果不是,你可以有类似的东西
#!/bin/bash
if [ "$1" = "--inner" ]; then
multiple
test
commands
…
else
echo "Starting tests"
timeout 3600 "$0" --inner
echo "End test"
fi
推荐阅读
- javascript - 如何在 UI 更改时进行后台同步而不是获取请求?
- python - 如何使用 Jupyter-Notebook/python 在文件的特定索引处插入整数?
- log4j - log4j-1.2-api 中的空 PropertyConfigurator 实现
- node.js - 带有 $lookup 的 MongoDB 聚合仅显示一个字段的结果
- python - 在python上的两行之间填充
- angular - Angular 加载所有匹配路由的模块
- powershell - PowerShell if elseif else
- c# - 从队列到队列消费和立即发布 RabbitMQ 消息的正确方法?
- r - 使用 R 删除总和为 0 的所有列
- function - 在 OOP 中,函数和方法是一样的吗?