我正在运行类似于以下内容的命令
getHosts | xargs -I{} -P3 -n1 ssh {} 'startServer; sleep 5; grep -m 1 "server up" <(tail -f log)'
问题是,在服务器出现之后,似乎ssh有时会挂起一段时间。此命令是否有任何问题可能导致它不能终止,以便并行执行可以继续?当我在远程shell中运行该命令时,对服务器的检查似乎是可靠的,并且在将“server up”写入日志时准时关闭。
答案 0 :(得分:1)
我可以通过两种方式看到它无法终止:
startServer
tail -f
没有捕获该行并且永远等待(因为tail
将默认采用最后10行) ssh
也可能由于各种原因而无法连接:主机关闭,密钥丢失等。我会以写入日志和/或
|| echo "Failed to do stuff" | mail -s SUBJECT TO@WHO.com
答案 1 :(得分:1)
而不是远程命令
startServer; sleep 5; grep -m 1 "server up" <(tail -f log)
我用
grep -m 1 "server up" <(tail -F log -n 0) & startServer ; wait
的差异:
tail
的{{1}}选项代替-F
,这样如果日志文件被轮换,我们将关注新文件,而不是继续无用地关注旧文件。