我正在尝试编写一个脚本,该脚本将ssh
放入一个盒子中,启动一个需要(由人类)监视成功或失败的进程,然后移至下一个盒子并重复。
我一直在尝试tail -f
在进程写入的日志上使用 tail 或,但我还没有找到一种方法让脚本在tail -f
运行时读取键盘输入。
理想情况下,我想tail -f
记录日志,直到看到过程成功为止,按一个键并让脚本继续,或者如果启动错误并退出脚本,则按另一个键。
这可能吗?
到目前为止我只想出了:
#!/bin/bash
kb=""
until [ "$kb" == "n" ]; do
tail /var/log/java-app.log
read -t 1 kb
done
它大部分都能工作,但很笨拙。我正在启动 java 应用程序,并且有暂停,因此偶尔会重复相同的 10 行,我必须点击enter才能确认n。我真的很想使用tail -f
并仍然从键盘读取(最好是2个)不同的变量。这可能吗?
{编辑}
我实际上是这么想的
tail -f /var/log/java-app.log | tee > ( grep -q "YADA YADA" )
是我最好的选择。Ctrl+C如果我发现错误我就可以。
答案1
#! /bin/bash
echo "Starting tail in the background..."
tail -f input &
pid=$!
trap "kill $pid" EXIT
while true; do
read kb
test n = "$kb" && break
done