如何在Shell中运行设置的时间


12

在中,如果并且如何能够使Terminal应用程序在强制关闭之前运行30秒,然后回显该进程的日志?


@JacobVlijm由于该语言的可移植性,它最好以shell脚本的形式运行,主要是因为预期的使用领域是CI服务。
ir-g

1
@ ir-g,您可以使用超时命令。例如,超时30秒命令
mcantsin 2014年

Answers:


19

您可能要使用timeout命令。

timeout -k 10s 30s command

该命令将运行30秒,如果仍在运行10秒后将其杀死。-检查手册页以了解更多选项。


1
@ ir-g,不客气。您可能还想签出watch命令,该命令是相似的,并且在命令行中也非常易于使用。
mcantsin 2014年

2
感谢您的指导,这使watch我感到非常有趣。可以派上用场...
ir-g

3

这有两种方法(但是mcantsin建议timeout命令可能更好):

  1. 在后台启动命令,这样将保存其PID,$!然后可以在指定时间后使用该命令将其杀死:

    command &
    sleep 30 && kill $!
  2. 启动命令并使用pkillkillall杀死它。注意:假设仅运行了一个具有该名称的命令,我firefox以该示例为例:

    firefox &
    sleep 30 && pkill firefox

我不知道您所说的“该进程的日志”是什么意思,但是可以使用将该进程的标准错误保存到文件中command 2> logfile.txt

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.