- A+
前几天我使用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
您也不必为秒指定后缀“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帮助程序安装它,例如Pacaur,Packer,Yay,Yaourt等。
对于其他发行版,请从此处下载源代码 并手动安装它。
安装Timelimit程序后,运行以下命令一段特定时间,例如10秒:
$ timelimit -t10 tail -f /var/log/pacman.log
如果你运行timelimit而没有任何参数,它将使用默认值: warntime=3600 seconds, warnsig=15, killtime=120, killsig=9.
有关更多详细信息,请参阅本指南末尾的手册页和项目网站。
$ man timelimit
- 安卓客户端下载
- 微信扫一扫
- 微信公众号
- 微信公众号扫一扫