尾部多个远程文件


41

有没有办法远程尾2文件?

我在负载均衡器后面有两个服务器(a和b),如果可能,我想做这样的事情:

tail -f admin@serverA:~/mylogs/log admin@serverB:~/mylogs/log

谢谢!


你为什么要删除答案?
Pablo Fernandez'2

主要是因为它不起作用:-)

@mat哦,我正要尝试:)。不管怎么说,多谢拉!
Pablo Fernandez'2

它不起作用,因为<(foo)构造将等待内部命令完成,然后在原始命令行中的管道(该管道将能够从中读取该软件)之前替换内部管道,并且tail永远不会完成:-)

Answers:


31

这为我工作:

ssh -n user@hostname1 'tail -f /mylogs/log' &
ssh -n user@hostname2 'tail -f /mylogs/log' &

是的,这就是我的做法,除了我通常打开多个gnome终端,每个终端都有一个会话
Tom O'Connor 2010年

1
有没有一种方法,而无需打开多个独立的ssh会话?
tgies

8
但这不允许您停止使用Ctrl+C
sorin 2014年

@sorin终止进程,只需使用fg; 将每个进程返回到前台即可。那么你可以的ctrl+c。您只需为每条尾巴跑步一次。或者,您可以pkill -f ssh同时定位所有这些目标。
戴尔·安德森

34

我的首选是使用多尾。我会运行类似的东西:

multitail -l 'ssh user@host1 "tail -f /some/log/file"' -l 'ssh user@host2 "tail -f /some/log/file"'

1
谢谢!我在寻找一个如何在远程主机上通过ssh使用multitail的示例!
Noah Sussman 2015年

Multitail是一种更为强大的解决方案。
obfk 2015年

我们的网站上有10个以上的Web节点,并且多重尾部在第一次尝试中失败,并显示错误消息Operation not permitted,即2 3个Web节点,没关系
Hieu Vo 2015年

我也知道了Operation not permitted,有什么线索吗?
Erik Aigner

7

您可以使用结构尾随多个主机(如果需要,还可以使用grep结果):

$ fab -P -u 'USER' -p 'PASSWORD' --linewise -H host1,host2,host3 -- tail -f /path/to/my/log.log | grep ERROR

6

我在想也可以使用:

ssh -f user@hostname1 "tail -f /var/log/file" > /tmp/somefile &
ssh -f user@hostname2 "tail -f /var/log/file" > /tmp/somefile &

ssh之后的-f选项允许您在后台运行密码之前输入密码。然后,您可以将逐行结果存储在一个文件中并运行:

tail -f /tmp/somefile

如果您想使用其他尾部选项来显示输出,将使您对当前的“ tail”命令有更多的控制。



5

看一看多尾巴。就像上面的示例一样,您可以将其作为ssh命令,然后最终将在一个屏幕上显示(并缓冲以方便回滚)多个日志。它还可以进行着色,这对于发现异常非常有用。


2

并行ssh为此提供了一个不错的解决方案:

pssh -t0 -H 'host-01 host-02 host-03 host-04' -P tail -f /var/log/app.log
  • -t0 禁用连接超时,否则pssh关闭连接
  • -H '<host>...' 是要运行命令的主机列表
  • -P 启用打印每个主机的标准输出
  • tail -f /var/log/app.log 可以是远程外壳程序可以运行的任何命令


1

只是一个奇怪的解决方案,但它可以工作!:

屏幕1

ssh user@hostname1 "tail -f /var/log/file" > /dev/pts/6

屏幕2

ssh user@hostname2 "tail -f /var/log/file" > /dev/pts/6

这将起作用,在/ dev / pts / 6终端上输出行(以查找您自己的终端:execute : who am i ,它将向您显示。)
Olivier Dulac


0

或者,您可以使用屏幕创建两个终端,然后将其拆分。

SSH到您要尾随日志文件的第一个主机,然后在运行tail之前,进入screen。

然后将文件拖到该主机上。

CTRL + A,c将创建一个新的屏幕或窗口。从这个新窗口中,ssh进入第二个主机,并将文件尾随在那里。

现在创建拆分屏幕

CTRL + A,SHIFT + S,将创建一个拆分屏幕,当前外壳在顶部,底部为空。要切换到底部并在其中放置第一个屏幕,

CTRL + A,TAB,这会将您移至底部。现在将您的第一个SSH会话带入该区域:

CTRL + A,“(引号),然后选择第一个会话,然后按Enter。

我知道这看起来很像体操,确实如此,但是一旦使用几次,您一定会习惯的。

这是一个非常好的教程或对屏幕命令的快速参考:http : //www.pixelbeat.org/lkdb/screen.html

此外,您可以创建一个.screenrc文件,以便我第一次输入屏幕时可以自动执行我描述的大部分内容。

关于此的另一件好事是,您可以关闭会话并在其他地方恢复它。例如,您在工作,并且正在进行一些监视。您可以关闭会话而不注销,然后在回家或到其他位置继续。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.