如何在Linux中的特定时间运行命令

 更新时间:2018年09月26日 11:44:42   作者:sk  
今天小编就为大家分享一篇关于如何在Linux中的特定时间运行命令,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

有一天,我使用 rsync 将大文件传输到局域网上的另一个系统。由于它是非常大的文件,大约需要 20 分钟才能完成。我不想再等了,我也不想按 CTRL+C 来终止这个过程。我只是想知道在 Linux 操作系统中是否有简单的方法可以在特定的时间运行一个命令,并且一旦超时就自动杀死它 —— 因此有了这篇文章。请继续阅读。

在 Linux 中在特定时间运行命令

我们可以用两种方法做到这一点。

方法 1 - 使用 timeout 命令

最常用的方法是使用 timeout 命令。对于那些不知道的人来说,timeout 命令会有效地限制一个进程的绝对执行时间。timeout 命令是 GNU coreutils 包的一部分,因此它预装在所有 GNU/Linux 系统中。

假设你只想运行一个命令 5 秒钟,然后杀死它。为此,我们使用:

$ timeout <time-limit-interval> <command>

例如,以下命令将在 10 秒后终止。

$ timeout 10s tail -f /var/log/pacman.log

你也可以不用在秒数后加后缀 s。以下命令与上面的相同。

$ timeout 10 tail -f /var/log/pacman.log

其他可用的后缀有:

  • m 代表分钟。
  • h 代表小时。
  • d 代表天。

如果你运行这个 tail -f /var/log/pacman.log 命令,它将继续运行,直到你按 CTRL+C 手动结束它。但是,如果你使用 timeout 命令运行它,它将在给定的时间间隔后自动终止。如果该命令在超时后仍在运行,则可以发送 kill 信号,如下所示。

$ timeout -k 20 10 tail -f /var/log/pacman.log

在这种情况下,如果 tail 命令在 10 秒后仍然运行,timeout 命令将在 20 秒后发送一个 kill 信号并结束。

有关更多详细信息,请查看手册页。

$ man timeout

有时,某个特定程序可能需要很长时间才能完成并最终冻结你的系统。在这种情况下,你可以使用此技巧在特定时间后自动结束该进程。

方法 2 - 使用 timelimit 程序

timelimit 使用提供的参数执行给定的命令,并在给定的时间后使用给定的信号终止进程。首先,它会发送警告信号,然后在超时后发送 kill 信号。

与 timeout 不同,timelimit 有更多选项。你可以传递参数数量,如 killsig、warnsig、killtime、warntime 等。它存在于基于 Debian 的系统的默认仓库中。所以,你可以使用命令来安装它:

$ sudo apt-get install timelimit

对于基于 Arch 的系统,它在 AUR 中存在。因此,你可以使用任何 AUR 助手进行安装,例如 Pacaur 、 Packer 、 Yay 、 Yaourt 等。

对于其他发行版,请 在这里 下载源码并手动安装。安装 timelimit 后,运行下面的命令执行一段特定的时间,例如 10 秒钟:

$ timelimit -t10 tail -f /var/log/pacman.log

如果不带任何参数运行 timelimit,它将使用默认值:warntime=3600 秒、warnsig=15 秒、killtime=120 秒、killsig=9。有关更多详细信息,请参阅本指南最后给出的手册页和项目网站。

$ man timelimit

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • Linux中的screen命令使用详解

    Linux中的screen命令使用详解

    这篇文章主要介绍了Linux中的screen命令使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • apache 开启重定向 rewrite的实现方法

    apache 开启重定向 rewrite的实现方法

    这篇文章主要介绍了apache 开启重定向 rewrite的实现方法的相关资料,希望通过本文能帮助到大家,让大家实现这样的功能,需要的朋友可以参考下
    2017-10-10
  • Linux实现自动登录的实例讲解

    Linux实现自动登录的实例讲解

    在本篇文章里小编给大家分享的是关于Linux实现自动登录的相关实例以及知识点,需要的朋友们参考学习下。
    2019-10-10
  • 虚拟机中centos修改时间的方法

    虚拟机中centos修改时间的方法

    今天小编就为大家分享一篇关于虚拟机中centos修改时间的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • linux时间同步ntp服务的安装与配置

    linux时间同步ntp服务的安装与配置

    这篇文章主要介绍了linux时间同步ntp服务的安装与配置的相关资料,需要的朋友可以参考下
    2016-10-10
  • CentOS安装Python2.7与Python2.6并存的方法

    CentOS安装Python2.7与Python2.6并存的方法

    这篇文章主要介绍了CentOS安装Python2.7与Python2.6并存的方法,非常具有实用价值,需要的朋友可以参考下
    2017-08-08
  • Linux使用sed命令替换字符串教程

    Linux使用sed命令替换字符串教程

    在本篇文章中小编给大家分享了关于Linux下如何使用sed命令替换字符串的相关知识点内容,有需要的朋友们学习下。
    2019-01-01
  • Linux 相对路径和绝对路径的使用

    Linux 相对路径和绝对路径的使用

    这篇文章主要介绍了Linux 相对路径和绝对路径的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • 2018值得选用的五个Linux服务器发行版

    2018值得选用的五个Linux服务器发行版

    Linux发行版很少互相复制。从以下5个最流行的Linux服务器发行版来看,这一点很明显,它们各有不同的优缺点,这篇文章给大家带来了2018值得选用的五个Linux服务器发行版,需要的朋友参考下吧
    2018-01-01
  • 学习Centos7软raid5的挂载

    学习Centos7软raid5的挂载

    本篇文章给大家通过详细步骤介绍了Centos7软raid5的挂载的方法,有需要的读者们学习下吧。
    2018-02-02

最新评论