Bash 一次执行二进制文件的脚本

Bash script to execute a binary file for a time

我有两个二进制文件,我想一个接一个地执行,问题是我想同时执行一分钟。我有以下 bash 代码:

./file_1
./file_2

但我不知道如何只 运行 一分钟。

这是一个可移植的解决方案 - 运行 后台的二进制文件,一分钟后将其杀死:

for file in "file_1" "file_2"; do
    "./$file" &
    file_pid=$!

    sleep 60

    kill "$file_pid"
done

&操作符启动一个后台作业,特殊变量$!包含最后一个作业的PID。循环是可选的。我们可以用它来减少重复代码。

这是使用 timeout 命令的单行代码

$ timeout 60 binary-1; timeout 60 binary-2

在本例中,格式为:

timeout duration command

其中持续时间默认为秒,或者也可以使用 1m(1 分钟),来自 man:

duration is a floating point number followed by an optional unit:

‘s’ for seconds (the default)
‘m’ for minutes
‘h’ for hours
‘d’ for days