当前位置: 首页 > 科技观察

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

时间:2023-03-14 23:56:59 科技观察

有一天,我使用rsync将一个大文件传输到局域网中的另一个系统。由于它是一个非常大的文件,因此大约需要20分钟才能完成。我不想再等了,我也不想按CTRL+C来终止进程。我只是想知道在类Unix操作系统中是否有一种简单的方法可以在特定时间运行命令并在超时后自动终止它-因此这篇文章。继续阅读。在Linux中的特定时间运行命令我们可以通过两种方式做到这一点。方法1-使用timeout命令最常见的方法是使用timeout命令。对于那些不知道的人,超时命令有效地限制了进程的绝对执行时间。timeout命令是GNUcoreutils包的一部分,因此它预装在所有GNU/Linux系统上。假设您只想运行一个命令5秒钟,然后终止它。为此,我们使用:$timeout例如,以下命令将在10秒后终止。$timeout10stail-f/var/log/pacman.log也可以省略秒后的后缀。以下命令与上面相同。$timeout10tail-f/var/log/pacman.log其他可用的后缀是:m代表分钟。h代表小时。d代表天。如果您运行此tail-f/var/log/pacman.log命令,它将一直运行,直到您通过按CTRL+C手动结束它。但是,如果您使用timeout命令运行它,它会在给定时间间隔后自动终止。如果命令在超时后仍在运行,则可以发送终止信号,如下所示。$timeout-k2010tail-f/var/log/pacman.log这种情况下,如果tail命令在10秒后还在运行,timeout命令会在20秒后发出kill信号结束。查看手册页以获取更多详细信息。$mantimeout有时,一个特定的程序可能需要很长时间才能完成并最终冻结您的系统。在这种情况下,您可以使用此技巧在一定时间后自动结束进程。或者,考虑使用cpulimit,这是一个限制进程CPU使用率的简单程序。有关详细信息,请查看下面的链接。如何在Linux中限制进程的CPU使用率方法2-使用timelimit程序timelimit使用提供的参数执行给定命令,并在给定时间后使用给定信号终止进程。首先,它发送一个警告信号,然后在超时后,它发送一个终止信号。与timeout不同,timelimit有更多的选择。您可以传递许多参数,如killsig、warnsig、killtime、warntime等。它存在于基于Debian的系统的默认存储库中。因此,您可以使用以下命令安装它:$sudoapt-getinstalltimelimit对于基于Arch的系统,它存在于AUR中。因此,您可以使用任何AUR帮助程序进行安装,例如Pacaur、Packer、Yay、Yaourt等。对于其他发行版,请在此处下载源并手动安装。安装timelimit后,运行以下命令一段特定的时间,比如10秒:$timelimit-t10tail-f/var/log/pacman.log如果不带任何参数运行timelimit,它将使用默认值:warntime=3600秒,warnsig=15秒,killtime=120秒,killsig=9。有关详细信息,请参阅本指南中提供的手册页和项目网站***。$mantimelimit今天就到这里。我希望这个对你有用。还有更好的东西。敬请关注!