Làm thế nào để bạn sử dụng các mẫu tạp chí của systemd


21

Tôi đang cố gắng sử dụng journalctlmô hình phù hợp trên SYSLOG_IDENTIFIERS. Ví dụ, tôi có rất nhiều thông điệp được gắn thẻ sshd:

$ journalctl -t sshd | wc -l
987

nhưng nếu tôi cố gắng sử dụng khớp mẫu để tìm chúng:

$ journalctl -t 'ssh*'
-- No Entries --
$ journalctl -t 'ssh.*'
-- No Entries --

Trang man của tạp chí nói rằng các mẫu nên hoạt động, nhưng tôi không thể tìm thấy bất cứ điều gì khác về cách các mẫu được sử dụng / định nghĩa trong systemd.

$ man journalctl
....
-t, --identifier=SYSLOG_IDENTIFIER|PATTERN
       Show messages for the specified syslog identifier SYSLOG_IDENTIFIER,
       or for any of the messages with a "SYSLOG_IDENTIFIER" matched by PATTERN.

Tôi đang chạy ArchLinux:

$ journalctl --version
systemd 225
+PAM -AUDIT -SELINUX -IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP
+GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID -ELFUTILS +KMOD +IDN

5
Dựa trên các cuộc thảo luận về IRC, có vẻ như đây là một lỗi (hoặc một vấn đề với tài liệu). Một lỗi đã được nộp .
Mark Grimes

1
thử cái này cho thời gian thực: tạp chí -f | grep sshd
nexoma

Bạn thực sự có thể thêm nhiều -t <định danh> nếu phù hợp với bạn.
sivann

Câu trả lời:


15

Đây là một lỗi doc đã bị đóng khi lỗi đánh máy trong mantrang được cập nhật.

Báo cáo lỗi dẫn đến các ý kiến sau trong mã :

Chúng tôi không thực sự chấp nhận các mẫu, do đó không yêu cầu như vậy.

Như một giải pháp thay thế, bạn có thể sử dụng grepnhư được đề xuất trong các nhận xét cho câu hỏi của bạn. Một cái gì đó như thế này:

journalctl | grep sshd

0

Các tiêu đề câu hỏi ban đầu "Làm thế nào để bạn sử dụng của systemd mẫu journalctl ". Điều này chỉ ra một tính năng rất cụ thể của tạp chí gọi là "MATCHES" chứ không phải là một bộ lọc biểu thức chính quy chung.

Tính năng "MATCHES" được chi tiết đầy đủ cùng với tất cả các tính năng khác tại trang người đàn ông thân thiện của nó, ngay từ đầu:

Nếu một hoặc nhiều đối số khớp được thông qua, đầu ra được lọc tương ứng.

Tính năng "khớp" có nghĩa là để lọc các mục nhật ký dựa trên một số bộ lọc có thể.

Đối với các trường hợp như câu hỏi ban đầu, đây là cách tôi làm (tôi cũng chạy ArchLinux).

Trước tiên, bạn cần biết tên dịch vụ mà bạn quan tâm. Tôi thường làm điều này:

systemctl | grep sshd

Tôi nhận được điều này:

sshd.service       loaded active running   OpenSSH Daemon

Sau đó, bạn có thể yêu cầu journalctllọc theo "tên đơn vị systemd" như thế này:

journalctl _SYSTEMD_UNIT=sshd.service

Nó được gọi là "bộ lọc phù hợp". Đó là nó.

Trong trường hợp câu hỏi ban đầu được viết thay vì có nghĩa là " làm thế nào để áp dụng grepcho đầu ra của tạp chí ", thì bạn có thể áp dụng grepcho các nhật ký được lưu trữ "cho đến nay" với

journalctl | grep ssh

hoặc nhìn vào các mục nhật ký hiện đang đến với

journalctl -f | grep ssh

và nhấn CTRL-C để ngăn chặn dòng chảy. Tất nhiên, bạn có thể sử dụng các đường ống phức tạp hơn với các mẫu thông thường được tạo hạt mịn hơn hoặc nhiều greplệnh.


Cảm ơn bạn đã phản hồi, nhưng _SYTEMD_UNIT không chấp nhận các mẫu. Như đã đề cập trong bình luận của tôi và câu trả lời của @ Tim, đây là một lỗi trong tài liệu.
Mark Grimes

@MarkGrimes, Ít nhất là đối với tôi (systemd 239) nó hoạt động. Tôi luôn kiểm tra những gì tôi nói trước khi viết nó xuống. Nó hoạt động như tài liệu.
EnzoR

Câu hỏi là về việc sử dụng các mẫu , ví dụ ssh*. Các tài liệu tạp chí tuyên bố rằng điều này có thể xảy ra cùng một lúc. Các tài liệu không chính xác và đã được cập nhật.
Mark Grimes

@MarkGrimes Câu hỏi là về các mẫu tạp chí của systemd chứ không phải bất kỳ mẫu ký tự nào . Xin vui lòng xem câu trả lời cập nhật của tôi. Và nó hoạt động theo ArchLinux chính xác như tài liệu.
EnzoR

-2

Bạn có thể xác định tệp đơn vị khi bạn chạy journalctl.

tạp chí -f -u sshd.service

Tôi sẽ chỉ hiển thị các tạp chí của sshd


Câu trả lời này không giải quyết câu hỏi. Người dùng đang yêu cầu sử dụng các mẫu trong bộ lọc.
Merlijn Sebrechts
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.