服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - 在 Linux 中使用 timeout 命令为正在运行的命令设置计时器

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

2023-05-08 17:11未知服务器之家 Linux

使用 timeout 命令,可以为运行的程序或命令设置超时时间,当程序或命令运行的时间超过设置值时,就会被 timeout 强行终止。 今天我们分享一下如何使用 timeout 命令。 如何使用 timeout 命令 timeout 命令的使用语法如下所示: timeou

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

使用 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 命令来让游戏程序在某个时间后强行终止运行。

延伸 · 阅读

精彩推荐
  • Linuxiptables配置(/etc/sysconfig/iptables)操作方法

    iptables配置(/etc/sysconfig/iptables)操作方法

    下面小编就为大家带来一篇iptables配置(/etc/sysconfig/iptables)操作方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    Linux教程网17592021-12-14
  • Linux详解:如何将 GitHub 连接到 VS Code

    详解:如何将 GitHub 连接到 VS Code

    两种微软产品可以很好地融合在一起。你可以在 VS Code 中无缝编码并将更改推送到你的 GitHub 仓库。从同一个应用界面完成所有这些工作让生活变得如此轻...

    未知1552023-05-08
  • LinuxLinux系统中iwconfig命令使用详解

    Linux系统中iwconfig命令使用详解

    这篇文章主要介绍了Linux系统中iwconfig命令使用详解,iwconfig用于配置或获取无线网络设备信息,需要的朋友可以参考下...

    Linux命令手册4122019-06-24
  • LinuxLinux 安装 MySQL 详细教程

    Linux 安装 MySQL 详细教程

    如何在 Linux 主机一步一步安装 MySQL 数据库?安装Linux服务器可选择:Centos,Redhat,Oracle Linux! ...

    Lucifer三思而后行12082021-12-02
  • LinuxLinux系统下配置HTTP负载均衡系统以扛流量增加

    Linux系统下配置HTTP负载均衡系统以扛流量增加

    随着网络流量的增加,服务器开始面临繁重负载,这时有套负载均衡系统就显得很重要了,下面为大家介绍下如何配置HTTP负载均衡系统 ...

    Linux技术网5422019-10-25
  • LinuxLinux探索之旅 什么是Linux?

    Linux探索之旅 什么是Linux?

    Linux挺复杂的,是给那些追求逼格的程序员用的。咱们老百姓呀,用用Windows就高兴。但事实并非如此,Linux不是那么“难于上青天”的。 ...

    脚本之家5182019-09-30
  • Linux为什么我在 Linux 上使用 exa 而不是 ls?

    为什么我在 Linux 上使用 exa 而不是 ls?

    exa 是一个常规 ls 命令的现代替代品,它让生活变得更轻松。这个工具是用 Rust 编写的,该语言以并行性和安全性而闻名。...

    Linux中国5822021-03-27
  • Linux在 systemd 中使用控制组管理资源

    在 systemd 中使用控制组管理资源

    systemd 和 SystemV 之间的一个主要差异是管理进程的方式。SystemV 将每个进程视作一个独立的实体。systemd 将相关的进程集中到一个控制组,简写做 cgroup,并将...

    Linux中国5482021-10-14