我正在使用ios-webkit-proxy-debug远程服务器,它通常会关闭或只是断开连接。 如果最后一行包含“Disconnected”或命令根本没有运行,我想重新启动服务器。
答案 0 :(得分:1)
问题可能是输出被缓冲了。你可以幸运地使用util" stdbuf"禁用缓冲区。 (另一个工具是" unbuffer")您可以使用以下命令完全禁用所有缓冲区:
stdbuf -i0 -o0 -e0 [command] # 0 is unbuffered and L is line-buffered
您的命令可能如下所示:
stdbuf -oL -eL ios_webkit_debug_proxy |& tee -a proxy.log
tail -f -n0 proxy.log | grep --line-buffered "Disconnected" | while read line ; do [restart server] ; done
我用它测试了它:
# This is one terminal
cd /tmp
echo > log
# This in another terminal
cd /tmp
tail -f -n0 log | grep --line-buffered "disconnect" | while read line ; do echo "found disconnect" ; done
# Then, in the first terminal
echo "test" >> log # second terminal does nothing
echo "disconnect" >> log # second terminal echos "found disconnect"
tail -n0是因为如果尾部在已经存在的日志文件中读取断开连接,它将在您运行该命令后立即重新启动服务器。
编辑: stdbuf被tee覆盖(参见man tee)。你可能会以不同的格式获得更多的运气,但有些东西可以用来:
stdbuf -oL -eL ios_webkit_debug_proxy 2>&1 >> proxy.log
# or
unbuffer ios_webkit_debug_proxy |& tee -a proxy.log | grep --line-buffered "Disconnected" | while read line ; do [restart server] ; done