时间和超时简述

作者:Nawaz Abbasi
A Brief Story of Time and Timeout

在使用 Linux 终端时,您经常会遇到需要监控命令执行时间或限制其运行时间的情况。timetimeout 命令是强大的工具,可以帮助您完成这些任务。在本教程中,我们将探讨如何有效地使用这两个命令,并提供实际示例。

使用 time 命令

Linux 中的 time 命令用于测量指定命令或进程的执行时间。它提供有关命令使用的实际时间、用户时间和系统时间的信息。实际时间表示实际经过的时间,而用户时间表示命令消耗的 CPU 时间,系统时间表示系统代表命令执行所花费的时间。

语法
time [options] command
示例

假设您要测量执行 ls 命令所用的时间

time ls

输出将提供如下信息:

real    0m0.005s

user    0m0.001s

sys     0m0.003s

在此示例中,real 时间是命令执行所花费的实际时间,而 usersys 时间分别表示在用户模式和系统模式下花费的 CPU 时间。

使用 timeout 命令

timeout 命令允许您在指定的时间限制内运行命令。如果命令未在指定时间内完成,timeout 将终止它。这在处理可能挂起或无限期运行的命令时尤其有用。

语法
timeout [options] duration command
示例

假设您想将潜在耗时的命令(例如备份脚本)的执行限制为 1 分钟

timeout 1m ./backup_script.sh

如果 backup_script.sh 在 1 分钟内完成,则该命令将自然完成。但是,如果超过时间限制,timeout 将终止它。

默认情况下,当达到时间限制时,timeout 会将 SIGTERM 信号发送到该命令。您也可以使用 -s (--signal) 选项指定要发送的信号。

组合使用 timetimeout

您还可以组合使用 timetimeout 命令来测量在时间受限环境中命令的执行时间。

timeout 10s time ./long_running_command.sh

在此示例中,timeout 命令确保 time 命令(用于测量执行时间)不会无限期运行。执行将在 10 秒后终止,并且 time 输出将提供对该时间段内使用的资源的深入了解。

结论

timetimeout 命令是用于管理 Linux 中命令执行时间的宝贵工具。 time 命令可帮助您了解命令的资源利用率,而 timeout 命令可让您控制命令的执行时间,以防止它们无限期运行。 通过掌握这些命令,您可以更好地管理终端任务并提高作为 Linux 用户的整体效率。

Nawaz 是一位 Linux CLI 爱好者,喜欢分享与命令行和 shell 脚本相关的技巧和教程。可以通过LinkedIn联系他。

加载 Disqus 评论