如何在 shell 中按设定的时间运行应用程序

如何在 shell 中按设定的时间运行应用程序

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

答案1

你可能想要使用暂停命令。

timeout -k 10s 30s command

它将运行命令 30 秒,如果仍在运行,则在 10 秒后终止它。 - 查看手册页以了解更多选项。

答案2

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

  1. 在后台启动该命令,这样它的 PID 就会被保存,$!您可以在指定时间后使用它来终止它:

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

    firefox &
    sleep 30 && pkill firefox
    

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

相关内容