Birden fazla uzak dosyayı sıralayın


41

Uzak kuyruk 2 dosya için bir yolu var mı?

Yük dengeleyicinin arkasında iki sunucum (a ve b) var ve mümkünse böyle bir şey yapmak istiyorum:

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

Teşekkürler!


Neden cevabı sildin?
Pablo Fernandez,

çoğunlukla işe yaramadığı için :-)
mat

@ mat Oh denemek üzereydim :). Yine de teşekkürler!
Pablo Fernandez,

çalışmaz çünkü <(foo) yapısı , yazılımın okuyabileceği orijinal komut satırında bir boru ile değiştirilmeden önce iç komutun bitmesini bekleyecek ve kuyruk asla bitmeyecektir :-)
mat

Yanıtlar:


31

Bu benim için çalıştı:

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

Evet, böyle yapıyorum, çünkü genellikle her biri içinde bir oturum olan birden fazla gnome-terminalim var
Tom O'Connor

1
Birden fazla bağımsız ssh oturumu açmadan bunu yapmanın bir yolu var mı?
tgies

8
Ancak bu, takip etmeyi bırakmanıza izin vermez Ctrl+C.
sorin '

süreçleri sonlandırmak için @sorin, sadece her birini ön plana getirin fg; o zaman yapabilirsin ctrl+c. Koştuğun her kuyruk için bunu bir kere yaparsın. Ya da pkill -f sshhepsini aynı anda hedefleyebilirsin.
Dale Anderson

34

Tercih ettiğim seçenek multitail ile gitmektir. Gibi bir şey çalıştırmak istiyorum:

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

1
Teşekkürler! Uzaktaki ana bilgisayarlarda ssh / multitail kullanmak için bir örnek arıyordum!
Noah Sussman

Multitail çok daha sağlam bir çözümdür.
obfk

web sitemiz 10'dan fazla web düğümüne sahip ve ilk olarak çoklu görev hatası hatayı denemede başarısız oldu, Operation not permitted2 3 web düğümü ile sorun değil
Hieu Vo

Ayrıca Operation not permitted, herhangi bir ipucu var mı?
Erik Aigner,

7

Birkaç ana bilgisayarı kuyruklamak için kumaş kullanabilirsiniz (ayrıca gerekirse grep sonuçları):

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

6

Kullanmanın da mümkün olabileceğini düşünüyordum:

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

Ssh sonrası -f seçeneği, arka planda çalışmadan önce bir şifre girmenize olanak sağlar. Ardından, satır satır sonuçların tek bir dosyada çalışıp çalışmasını sağlayabilirsiniz:

tail -f /tmp/somefile

Çıktıyı görüntülemek için diğer kuyruk seçeneklerini kullanmak istemeniz durumunda, geçerli "kuyruk" komutu üzerinde size biraz daha fazla kontrol sağlar.



5

Bir göz atın multitail . Yukarıdaki örneklerde olduğu gibi, ssh komutunu verebilirsiniz ve ardından birden fazla günlüğü görüntüleyen (ve kolay kaydırma işlemleri için arabelleğe alma) olan bir ekran görüntüleyeceksiniz. Aynı zamanda anomalileri tespit etmek için çok yararlı olan renklendirme de yapar.


2

Paralel ssh , bunun için güzel bir çözüme sahiptir:

pssh -t0 -H 'host-01 host-02 host-03 host-04' -P tail -f /var/log/app.log
  • -t0 bağlantı zaman aşımını devre dışı bırakır, aksi takdirde pssh bağlantıyı kapattı
  • -H '<host>...' komutu çalıştırmak için ana bilgisayarların listesi
  • -P Her ana bilgisayarın stdout'unu yazdırmayı sağlamaktır
  • tail -f /var/log/app.log uzak kabuğunuzun çalıştırabileceği herhangi bir komut olabilir


1

Sadece tuhaf bir çözüm, ama işe yarıyor !:

1. Ekran

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

Ekran 2

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

bu, çalışacak, / dev / pts / 6 terminaline satırlar gönderecek (kendi terminalinizi bulmak için: yürüt: who am i ve size gösterecektir.)
Olivier Dulac

1

DBitail'i kontrol edebilirsiniz.

Oluşturduğum bir Java aracı, SSH kullanarak yerel ve uzak günlük dosyalarını okuyabilir. Kullanımı oldukça basittir.

Bazı açıklamalar: https://github.com/pschweitz/DBITail/wiki

İşletim sisteminize uygun, Java Runtime'ınız içinde çalıştırılabilir yerel kavanoz sürümünün sürümünü indirin (java 8_40 veya üstü gerekir):

https://github.com/pschweitz/DBITail/releases

Tam bir dokümantasyon bulabilirsiniz (gömülü ve ben Github'ın sayfası da)

Philippe


0

ya da iki terminal oluşturmak ve sonra bunları bölmek için ekranı kullanabilirsiniz.

Günlük dosyasını kuyruklamak istediğiniz ilk konağa SSH ile kuyruk çalıştırmadan önce ekrana girin.

Ardından dosyayı bu ana bilgisayara yerleştirin.

CTRL + A, c yeni bir ekran veya pencere oluşturur. Bu yeni pencereden 2. sunucuyu ssh ile açın ve dosyayı buraya yerleştirin.

Şimdi bölünmüş ekranı oluşturmak için

CTRL + A, ÜST KRKT + S, bu üst kısımda ve alt kısımda boş olan mevcut kabuğu olan bölünmüş bir ekran yaratacaktır. Alt kısma geçmek ve ilk ekranı içine yerleştirmek

CTRL + A, TAB, bu sizi alt kısma taşıyacaktır. Şimdi ilk SSH oturumunuzu bu alana getirmek için:

CTRL + A, "(alıntı sembolü) ve ilk oturumu seçip enter tuşuna basın.

Bunun bir çok jimnastik gibi görünebileceğini biliyorum ve öyle, ama birkaç kez kullandığınızda faydalanacaksınız.

İşte ekran komutlarına gerçekten iyi bir öğretici veya hızlı referans: http://www.pixelbeat.org/lkdb/screen.html

Ek olarak, bir .screenrc dosyası oluşturabilirsiniz, böylece açıkladığımların çoğu ekrana ilk girdiğinizde otomatik hale getirilebilir.

Bu konuda bir başka güzel şey de oturumu kapatıp başka bir yere devam ettirebilmen. Örneğin, iştesiniz ve devam eden bazı izlemeleriniz var. Oturumu kapatmadan oturumunuzu kapatabilir ve eve ya da başka bir yere geldiğinizde devam edebilirsiniz.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.