如果 Linux 命令在一分钟内没有输出某个字符串,如何使它失败?
How to fail a Linux command if it doesn't output a certain string within a minute?
我正在使用 AWS Codebuild 设置自托管 Github Actions 运行ner。在我的主要构建部分,我只是 运行ning 命令 ./run.sh
,这会启动自托管 运行ner,侦听作业,然后选择特定的作业。在某些情况下,这些实际上并没有最终找到工作,只是坐在那里听 30 分钟的工作,直到 Codebuild 超时。
我想做的是 运行 这个命令,但是检查 运行ning 的第一分钟内,它输出一个包含 Running job:
的字符串。如果是这样,很好,继续 运行ning run.sh 命令直到它完成。如果没有,退出命令并完成代码构建。
这可以吗?我对 Linux 命令不是很熟悉。
我可以使用以下方法将其添加到我的构建规范中:
build:
commands:
- |
cat >> expect.sh <<EOL
#!/usr/bin/expect -f
set timeout 30
spawn ./run.sh
expect {
"Running job:" { puts "Job found"; set timeout -1; exp_continue }
timeout { puts "Timed out"; exit 1 }
eof { puts "End of command"; exit 0 }
}
EOL
- expect -f expect.sh
我正在使用 AWS Codebuild 设置自托管 Github Actions 运行ner。在我的主要构建部分,我只是 运行ning 命令 ./run.sh
,这会启动自托管 运行ner,侦听作业,然后选择特定的作业。在某些情况下,这些实际上并没有最终找到工作,只是坐在那里听 30 分钟的工作,直到 Codebuild 超时。
我想做的是 运行 这个命令,但是检查 运行ning 的第一分钟内,它输出一个包含 Running job:
的字符串。如果是这样,很好,继续 运行ning run.sh 命令直到它完成。如果没有,退出命令并完成代码构建。
这可以吗?我对 Linux 命令不是很熟悉。
我可以使用以下方法将其添加到我的构建规范中:
build:
commands:
- |
cat >> expect.sh <<EOL
#!/usr/bin/expect -f
set timeout 30
spawn ./run.sh
expect {
"Running job:" { puts "Job found"; set timeout -1; exp_continue }
timeout { puts "Timed out"; exit 1 }
eof { puts "End of command"; exit 0 }
}
EOL
- expect -f expect.sh