如何在shell中运行应用程序一段时间

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

您可能希望使用timeout命令。

 timeout -k 10s 30s command 

如果仍在运行,它将运行30秒的命令并在10秒后杀死它。 – 查看联机帮助页以获取更多选项。

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

  1. 在后台启动命令,这样它的PID保存在$! 并且你可以使用它在指定的时间后杀死它:

     command & sleep 30 && kill $! 
  2. 启动命令并使用pkillkillall将其杀死。 注意:这假设只有一个具有该名称的命令正在运行,我使用firefox作为示例:

     firefox & sleep 30 && pkill firefox 

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