
timeout 是 Linux 操作系统中一个非常实用的工具,用于在设定的时间后停止正在运行的命令。这个功能在以下几种情况下尤为有用:
timeout 属于 GNU coreutils 软件包的一部分,在大多数 Linux 发行版中都默认安装。
timeout 的基本命令格式如下:
<pre class="brush:php;toolbar:false;">timeout [选项] 持续时间 命令 [参数...]
持续时间:
10s
5m
1h
0.5s
1.5m
命令:
参数:
| 选项 | 作用说明 | 示例用法 |
|---|---|---|
| `-s` 或 `--signal` | 定义超时后发送的信号类型(默认为 TERM) | `timeout -s KILL 5s command` |
| `-k` 或 `--kill-after` | 如果初始信号无效,在指定时间后发送强制终止信号 | `timeout -k 5s 10s command` |
| `--preserve-status` | 返回被中断命令的实际退出码 | `timeout --preserve-status 5s command` |
| `--foreground` | 在前台模式下运行命令(默认后台运行) | `timeout --foreground 5s command` |
| `-v` 或 `--verbose` | 输出详细信息 | `timeout -v 5s command` |
# 5秒后停止 ping 命令
timeout 5s ping example.com
# 1分钟后结束脚本执行
timeout 1m ./long_script.sh
# 3秒后发送 INT 信号(等同于 Ctrl+C)
timeout -s INT 3s command
# 10秒后发送 KILL 信号(强制结束)
timeout -s KILL 10s command
# 先发送 TERM 信号,5秒后再发送 KILL 信号
timeout -k 5s 10s command
# 限制数据库备份脚本最多运行2小时
timeout 2h ./backup_database.sh
# 测试用例最多运行30秒
timeout 30s ./run_test_case.sh
# 下载文件最多尝试1分钟
timeout 1m wget https://www.php.cn/link/b9d21287003f6041d2efb5c0cbcce3fd
信号响应机制:
子进程处理问题:
kill
时间精度控制:
返回值解读:
# 超时后触发清理操作
timeout 30s command || echo "命令已超时,开始清理..."
#!/bin/bash
if timeout 10s command; then
echo "命令成功执行完毕"
else
echo "命令超时或出现错误"
fi
A: sleep 是单纯等待指定时间,而 timeout 是用来限制另一个命令的执行时间。
A: 可以采用进程组的方式:
<pre class="brush:php;toolbar:false;">timeout --foreground 10s sh -c 'command & wait'
A: 可能是程序捕获了默认的 TERM 信号,建议尝试使用
-s KILL
A: 检查退出码是否为 124:
timeout 命令是 Linux 系统管理中非常重要的工具,它可以帮助我们:
通过恰当使用 timeout 命令,可以显著提升 Linux 系统管理的效率和可靠性。
以上就是linux限制命令运行时间是什么-timeout 命令使用与实例的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号