Đuôi nhiều tập tin từ xa


41

Có cách nào để đuôi 2 file từ xa không?

Tôi có hai máy chủ (a và b) phía sau bộ cân bằng tải và tôi muốn làm một cái gì đó như thế này nếu có thể:

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

Cảm ơn!


Tại sao bạn lại xóa câu trả lời?
Pablo Fernandez

chủ yếu là vì nó không hoạt động :-)
mat

@mat Oh tôi chỉ định thử thôi :). Dù sao đi nữa cũng xin cám ơn!
Pablo Fernandez

nó không hoạt động vì cấu trúc <(foo) sẽ đợi lệnh bên trong kết thúc trước khi được thay thế bằng một đường ống trong dòng lệnh ban đầu mà phần mềm sẽ có thể đọc và đuôi sẽ không bao giờ kết thúc :-)
mat

Câu trả lời:


31

Điều này làm việc cho tôi:

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

Đúng, đó là cách tôi làm, ngoại trừ tôi thường mở nhiều thiết bị đầu cuối, mỗi phiên có một phiên bên trong
Tom O'Connor

1
Có cách nào để làm điều này mà không cần mở nhiều phiên ssh độc lập không?
tgies

8
Nhưng điều này không cho phép bạn dừng việc theo đuôi Ctrl+C.
sorin

@sorin để chấm dứt các quá trình, chỉ cần đưa từng cái trở lại nền trước với fg; sau đó bạn có thể ctrl+cnó Bạn sẽ làm điều đó một lần cho mỗi đuôi bạn đang chạy. Hoặc bạn có thể pkill -f sshnhắm mục tiêu tất cả chúng cùng một lúc.
Dale Anderson

34

Tùy chọn ưa thích của tôi là đi với đa nhiệm. Tôi sẽ chạy một cái gì đó như:

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

1
Cảm ơn! Tôi đang tìm một ví dụ về cách sử dụng đa nhiệm trên ssh / trên các máy chủ từ xa!

Đa nhiệm là một giải pháp mạnh mẽ hơn nhiều.
obfk

Trang web của chúng tôi có hơn 10 nút web và lỗi đa nhiệm trong lần thử đầu tiên với lỗi Operation not permitted, với 2 3 nút web, không sao cả
Hiếu Võ

Tôi cũng có được Operation not permitted, manh mối nào?
Erik Aigner

7

Bạn có thể sử dụng vải để theo đuôi một số máy chủ (và cả kết quả grep, nếu cần):

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

6

Tôi đã nghĩ rằng nó cũng có thể được sử dụng:

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

Tùy chọn -f sau ssh cho phép bạn nhập mật khẩu trước khi nó chạy trong nền. Sau đó, bạn có thể có kết quả từng dòng trong một tệp và chạy:

tail -f /tmp/somefile

Sẽ cung cấp cho bạn thêm một chút quyền kiểm soát lệnh "đuôi" hiện tại trong trường hợp bạn muốn sử dụng các tùy chọn đuôi khác để hiển thị đầu ra.



5

Hãy nhìn vào multitail . Giống như các ví dụ ở trên, bạn có thể đưa ra lệnh này cho ssh, và sau đó bạn sẽ kết thúc với một màn hình hiển thị (và đệm để cuộn dễ dàng) nhiều bản ghi. Nó cũng tô màu, rất hữu ích cho việc phát hiện dị thường.


2

Parallel ssh có một giải pháp tốt cho việc này:

pssh -t0 -H 'host-01 host-02 host-03 host-04' -P tail -f /var/log/app.log
  • -t0 vô hiệu hóa thời gian chờ kết nối, nếu không pssh đã đóng kết nối
  • -H '<host>...' là danh sách các máy chủ để chạy lệnh
  • -P là để cho phép in tiêu chuẩn của mỗi máy chủ
  • tail -f /var/log/app.log có thể là bất kỳ lệnh nào mà shell từ xa của bạn có thể chạy


1

Chỉ là một giải pháp kỳ lạ, nhưng nó hoạt động!:

Màn hình 1

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

Màn hình 2

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

điều này sẽ hoạt động, xuất ra các dòng trên thiết bị đầu cuối / dev / pts / 6 (để tìm ra thiết bị đầu cuối của riêng bạn: thực thi: who am i và nó sẽ hiển thị cho bạn.)
Olivier Dulac

1

Bạn có thể kiểm tra dbitail.

Một công cụ Java do tôi tạo, có thể đọc các tệp nhật ký cục bộ và ở xa bằng SSH. Nó khá đơn giản để sử dụng.

Một số giải thích thêm: https://github.com/pschweitz/DBITail/wiki

Chỉ cần tải xuống phiên bản tương ứng với hệ điều hành của bạn, của bản phát hành jar gốc có thể thực thi được trong Thời gian chạy Java của bạn (yêu cầu java 8_40 trở lên):

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

Bạn có thể tìm thấy một tài liệu hoàn chỉnh (được nhúng cùng với trang của I Github)

Philippe


0

hoặc bạn có thể sử dụng màn hình để tạo hai thiết bị đầu cuối và sau đó phân chia chúng.

SSH vào máy chủ đầu tiên bạn muốn theo đuôi tệp nhật ký và trước khi chạy đuôi, nhập màn hình.

Sau đó, đuôi tập tin trên máy chủ này.

CTRL + A, c sẽ tạo một màn hình hoặc cửa sổ mới. Từ cửa sổ mới này ssh vào máy chủ thứ 2 và đuôi tệp ở đó.

Bây giờ để tạo màn hình chia nhỏ

CTRL + A, SHIFT + S, điều này sẽ tạo ra một màn hình chia nhỏ với lớp vỏ hiện tại ở phần trên cùng và phần dưới cùng trống. Để chuyển sang phần dưới cùng và đặt màn hình đầu tiên vào trong đó,

CTRL + A, TAB, điều này sẽ chuyển bạn đến phần dưới cùng. Bây giờ để mang phiên SSH đầu tiên của bạn vào khu vực này:

CTRL + A, "(ký hiệu trích dẫn) và chọn phiên đầu tiên và nhấn enter.

Tôi nhận ra điều này có thể trông giống như rất nhiều môn thể dục dụng cụ, và nó là như vậy, nhưng bạn đã quen với nó một khi bạn sử dụng nó một vài lần.

Đây là một hướng dẫn thực sự tốt hoặc tham khảo nhanh về các lệnh của màn hình: http://www.pixelbeat.org/lkdb/screen.html

Ngoài ra, bạn có thể tạo tệp .screenrc để phần lớn những gì tôi mô tả có thể được tự động hóa khi bạn vào màn hình lần đầu tiên.

Một điều tốt đẹp về điều này là bạn có thể đóng phiên của bạn và tiếp tục nó ở một nơi khác. Ví dụ: bạn đang làm việc và bạn có một số hoạt động giám sát đang diễn ra. Bạn chỉ có thể đóng phiên của mình mà không cần đăng xuất và tiếp tục khi bạn về nhà hoặc đến một địa điểm khác.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.