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

  • Linux中如何在规定的时间内运行命令已关闭评论
  • 105 views
  • A+
所属分类:linux

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

前几天我使用rsync将一个大文件传输到我所在局域网的另一个系统。由于它是一个非常大的文件,完成大约需要20分钟。我不想再等那么久了,而且我也不想通过按CTRL + C来手动终止进程。我只是想知道是否有简单的方法可以在特定时间内运行命令并在linux操作系统中自动终止它

在Linux中运行规定时间的命令

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

方法1 - 使用“timeout”命令

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

让我们说,您只想在规定时间运行命令,然后在时间过后自动终止它。为此,我们使用:

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

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

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

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

您也不必为秒指定后缀“s”。以下命令与上述相同。

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

其他可用的后缀是:

  • ‘m’ for minutes,
  • ‘h’ for hours
  • ‘d’ for days.

如果运行此tail -f /var/log/pacman.log命令,它将继续运行,直到您通过按CTRL + C手动结束它。但是,如果您使用timeout命令运行它,它将在给定的时间间隔后自动终止。

如果命令在超时后仍然运行,你可以发送如下的终止信号。

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

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

在解决硬件问题时,timeout命令特别有用。例如,运行以下命令以显示来自内核环缓冲区的所有消息,但仅持续10秒。

$ timeout 10 dmesg -w

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

$ man timeout

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


另外,请考虑使用Cpulimit,这是一个简单的应用程序来限制进程的CPU使用率。有关更多详细信息,请查看以下链接。


方法2 - 使用“Timelimit”程序

 

Timelimit实用程序使用提供的参数执行给定命令,并在给定时间后使用给定信号终止生成的进程。首先,它将通过警告信号,然后在超时后,它将发送终止信号。

与timeout 不同,Timelimit有更多选项。您可以传递多个参数,例如killsig,warnsig,killtime,warntime等。

它在基于Debian的系统的默认存储库中可用。因此,您可以使用命令安装它:

$ sudo apt-get install timelimit

 

对于基于Arch-based的系统,可在AUR中使用。因此,您可以使用任何AUR帮助程序安装它,例如PacaurPackerYayYaourt等。

对于其他发行版,请从此处下载源代码 并手动安装它。

安装Timelimit程序后,运行以下命令一段特定时间,例如10秒:

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

如果你运行timelimit而没有任何参数,它将使用默认值: warntime=3600 secondswarnsig=15killtime=120killsig=9.

 

有关更多详细信息,请参阅本指南末尾的手册页和项目网站。

$ man timelimit

 

  • 安卓客户端下载
  • 微信扫一扫
  • weinxin
  • 微信公众号
  • 微信公众号扫一扫
  • weinxin
avatar