Linux中使用timeout命令为正在运行的命令设置计时器

发表于:2023-4-13 09:27

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:佚名    来源:TIAP

  使用 timeout 命令,可以为运行的程序或命令设置超时时间,当程序或命令运行的时间超过设置值时,就会被 timeout 强行终止。
  今天我们分享一下如何使用 timeout 命令。
  如何使用 timeout 命令
  timeout 命令的使用语法如下所示:
  timeout [options] seconds command
  在上述语法描述中,时间的单位为秒(second)。
  我们以 sleep 命令为例。sleep 命令会让系统休眠指定的时间,比如 sleep 10,系统会休眠 10 秒钟(即当前 shell 会等待 10 秒钟)。但是如果我使用了 timeout 命令,如下所示:
  timeout 4 sleep 10
  上述命令中,sleep 命令指定的 10 秒钟,即原计划让 shell 等待 10 秒钟,但是前面添加了 timeout 命令,设置超时时间为 4 秒钟,所以最终结果是在 4 秒钟后 sleep 命令被终止,shell 被重新唤醒。
  默认情况下,timeout 命令会发送 SIGTERM 信号柔和的终止正在运行的程序。但是我们可以使用 -s 选项来使用其他信号。
  大家可以使用 kill -l 命令来查看 Linux 中的 kill 信号。假如我们想要发送 SIGKILL 信号(kill -9),而不是默认的 SIGTERM,可参考如下命令:
  timeout -s SIGKILL 3 sleep 30
  此外,我们也可以使用 KILL 或 9(kill -l 中列出的 SIGKILL 的数字)来代替 SIGKILL。
  强制杀掉进程有可能会造成数据丢失,不过程序确实可以忽略 SIGTERM。
  另外一种更好的处理方式是,假如你发送的终止请求被正在运行的(想要终止的)程序给忽略了,那么这时候可以发送强制终止信号。
  我们来看这样一个例子:假设我们想运行一个时间不超过 5 秒的程序,但是当程序运行以后(因某种原因)无法终止,那么我们可以在发送默认的 SIGTERM 信号 3 秒钟后再发送一个强制终止的信号。如下命令所示:
  timeout -k 3 5 program
  这也就意味着,我们所运行的那个程序,运行时间不会超过 8 秒钟。可以使用 time 命令来检查程序实际的运行时间。
  那么,timeout 命令的实际应用场景是什么呢?
  timeout 命令看起来跟其他一些不怎么常用的命令一样,使用的时候比较少。然而,在某些特殊情况下,它还是很有用的。
  比如在进行网络操作的时候可以使用 timeout 来设置超时时间,或者当你在玩一个终端游戏的时候,为了防止沉迷于游戏(玩的时间过长),也可以使用 timeout 命令来让游戏程序在某个时间后强行终止运行。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号