

在 Linux 中使用 timeout 命令为正在运行的命令设置计时器
source link: https://www.51cto.com/article/751818.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.


使用 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 命令来让游戏程序在某个时间后强行终止运行。
Recommend
-
51
原文:https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/ 以下是译文: 什么是事件循环(Event Loop,注意空格) JavaScript 是单线程的,有了 event loo
-
20
Go语言计时器 Go 语言的标准库里提供两种类型的计时器 Timer 和 Ticker 。 Timer 经过指定的 duration 时间后被触发,往自己的时间 channel
-
2
JavaScript 倒数计时器 用于各种电子商务和建设中的网站...
-
4
使用kotlinc、kotlin、java命令进行kotlin程序运行发布于 今天 11:52 使用kotlinc、kotlin、java命令进行kotlin程序运行kotlinc xxx.kt可以生成 XxxKt.class...
-
6
圆周率日Pi Day(3 月 14 日) 来了又走,留下美好的回忆以及 许多树莓派项目 等待我们去尝试。在任何令人精...
-
5
非常简单的一个计时器,没有太多原理,我们直接上代码。 先看课程目标 就是一个简单的计时器,我们直接上使用示例吧
-
7
command Linux timeout命令设置命令超时 timeout是一个命令行程序,用于在指定的时间内运行命令,如果超出指定时间,则终止该命令
-
6
https://blog.csdn.net/HD243608836/article/details/111564684 nginx比较强大,可以针对单个域名请求做出单个连接超时的配置. 比如些动态解释和静态解...
-
9
Nginx 504 Gateway错误怎么办?😱 #CWP7 的timeout limit又是怎么设置的呢? https://chenweiliang.com/cwl-30321.html
-
8
使用Linux定时器实现定时任务和计时器应用 作者:编程技术汇 2023-12-11 09:50:35 通过使用Linux定时器,可以方便地实现各种定时任务和计时器应用,本文将详细介绍如何使用Linux定时器来实现这些功能。
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK