Làm cách nào để tạm dừng (hoặc chụp) các tin nhắn bay qua ở cuối chuỗi khởi động?


8

Đến cuối "trình tự khởi động" 1 , tôi thấy một loạt các thông báo chẩn đoán dài rất nhanh, ngay trước khi tôi thấy dấu nhắc đăng nhập 2 .

AFAICT, hầu hết, nếu không phải tất cả, các dòng tạo nên đầu ra có thời gian ngắn này bắt đầu bằng một trong các chuỗi được hiển thị bên dưới

[  OK  ]
[FAILED]

... Trong đó OKmàu xanh lá cây và FAILEDmàu đỏ 3 .

Những tin nhắn này quá nhanh để tôi đọc.

Câu hỏi của tôi là:

Có cách nào để làm cho những tin nhắn này dễ đọc hơn không?


Các giải pháp có thể xuất hiện trong tâm trí bao gồm (theo thứ tự ưu tiên):

  1. phát bóng (hoặc đơn giản là chuyển hướng) những thông điệp nguyên văn 4 đến một số tệp nhật ký liên tục;
  2. cho phép một cơ chế kiểu phân trang ( Press any key to continue...);
  3. chèn tạm dừng (có độ dài cấu hình) sau khi các tin nhắn đó được in;
  4. cho phép một số phím (hoặc tổ hợp phím) tạm dừng đầu ra ra màn hình 5 .

EDIT: dựa trên các ý kiến ​​tôi đã nhận được cho đến nay, tôi phải kết luận rằng từ nguyên văn trong (1) ở trên là không được hiểu hoặc không được thực hiện nghiêm túc, mặc dù tôi đã nhấn mạnh nhiều nhất có thể. Tôi sẽ làm cho nó nhấp nháy nếu tôi có thể ...


EDIT2: gợi ý mà meuh đưa ra trong các bình luận có vẻ hứa hẹn với tôi, nhưng tôi chưa thể làm cho nó hoạt động được. Đây là những gì tôi đã làm:

Đầu tiên, tôi đã thêm vào như sau vào cuối /etc/rsyslog.conf:

# Save boot messages also to boot.log
local7.* /var/log/boot.log

... và khởi động lại. Tôi thấy các thông báo chẩn đoán thông thường bay qua, nhưng không có /var/log/boot.logtệp nào được tạo.

Sau đó, trong trường hợp (không thể thừa nhận) rằng /var/log/boot.logphải tồn tại trước đó rsyslogcó thể ghi vào nó, tôi đã thực thi (với quyền root):

touch /var/log/boot.log
chgrp adm /var/log/boot.log
chmod 640 /var/log/boot.log

... Trong đó các lệnh chgrpchmodđược dự định để tạo quyền sở hữu và quyền /var/log/boot.logkhớp với các quyền của tất cả các tệp nhật ký khác bên dưới /var/log. Sau đó, tôi khởi động lại, thấy các tin nhắn, vv Các tập tin /var/log/boot.logvẫn trống sau khi khởi động lại này.

(Tôi đã cùng phi kết quả khi tôi thay đổi các điều khoản của /var/log/boot.logđể 666.)

Tôi grepđã xuất ra journalctl --bootvà các tệp bên dưới /var/logcho bất cứ điều gì tôi có thể nghĩ về điều đó có thể chỉ ra điều gì đó không ổn với tôi rsyslog, nhưng không tìm thấy gì. (Tôi hoàn toàn không quen thuộc rsyslog, vì vậy tôi chắc chắn rằng tìm kiếm của tôi khá kém.)

Rõ ràng là những gì tôi đã làm cho đến nay là không đủ để cho phép ghi nhật ký mong muốn. Bây giờ tôi đang tìm kiếm bất cứ thứ gì tôi đang thiếu. Tôi đã không thể tìm thấy nhiều tài liệu có liên quan, mặc dù. Ví dụ, không phải rsyslog.conf(5)cũng không rsyslogd(8)muốn giải thích điều gì local7( rsyslog.conf(5)ít nhất là đủ duyên dáng để đề cập đến nó một lần, mà không cung cấp thêm thông tin nào).


EDIT3

Thông tin phân phối:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 8.3 (jessie)
Release:    8.3
Codename:   jessie
$ uname -a
Linux myhost 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u3 (2016-01-17) x86_64 GNU/Linux

EDIT4

Thông tin bổ sung có khả năng liên quan:

$ cat /lib/systemd/system/rsyslog.service
[Unit]
Description=System Logging Service
Requires=syslog.socket
Documentation=man:rsyslogd(8)
Documentation=http://www.rsyslog.com/doc/

[Service]
Type=notify
ExecStart=/usr/sbin/rsyslogd -n
StandardOutput=null
Restart=on-failure

[Install]
WantedBy=multi-user.target
Alias=syslog.service
$ cat /proc/$(pgrep rsyslogd)/limits
Limit                     Soft Limit           Hard Limit           Units     
Max cpu time              unlimited            unlimited            seconds   
Max file size             unlimited            unlimited            bytes     
Max data size             unlimited            unlimited            bytes     
Max stack size            8388608              unlimited            bytes     
Max core file size        0                    unlimited            bytes     
Max resident set          unlimited            unlimited            bytes     
Max processes             128529               128529               processes 
Max open files            1024                 4096                 files     
Max locked memory         65536                65536                bytes     
Max address space         unlimited            unlimited            bytes     
Max file locks            unlimited            unlimited            locks     
Max pending signals       128529               128529               signals   
Max msgqueue size         819200               819200               bytes     
Max nice priority         0                    0                    
Max realtime priority     0                    0                    
Max realtime timeout      unlimited            unlimited            us        

$ sudo ls /proc/$(pgrep rsyslogd)/fd | wc -l
10

1 Tức là diễn ra khi tôi (khởi động lại) máy của mình.

2 FWIW, multi-user.targetlà mặc định của tôi.

3 Văn bản còn lại toàn màu trắng trên nền đen. Điều này đúng với lời nhắc đăng nhập tiếp theo.

4 Tôi thấy hoàn toàn không thể chấp nhận bất kỳ giải pháp nào không cho phép tôi xem văn bản chính xác của những tin nhắn này khi chúng xuất hiện trong chuỗi khởi động. Vì, luôn luôn, tôi không quen thuộc với bất kỳ thông điệp chẩn đoán nào được đề cập đến, tôi không thể nhận ra tất cả các cách mà thông tin cơ bản được truyền tải bởi tin nhắn ban đầu có thể bị diễn giải, lan truyền trên nhiều tin nhắn khác , bị chìm trong các tin nhắn khác, v.v. (Chỉ bằng cách tìm kiếm trực tuyến từ ngữ chính xác của tin nhắn gốc, tôi mới có hy vọng tìm ra giải pháp cho vấn đề.) Mọi thứ tôi đã thử cho đến nay, bao gồm journalctl -bdmesgđã thất bại trong việc đưa cho tôi các thông điệp ban đầu nguyên văn. Ví dụ, khi tôi chạy khởi động, tôi chỉ có thể thấy một màu đỏ FAILED, nhưng journalctl --boot | grep FAILED | wc -ltrả về 0journalctl --boot | grep -i FAILED | wc -l trả về 1086. Đây không phải là những gì tôi đang tìm kiếm.

5 Trong hệ thống của tôi, tôi sẽ có ít hơn một giây để bấm phím hoặc tổ hợp phím đó và không có báo trước khi khoảng thời gian ngắn này bắt đầu. Trừ khi người ta có thể định cấu hình thời lượng của khoảng thời gian trong đó phải nhấn phím như vậy, bất kỳ giải pháp dựa trên phím bấm nào là không thực tế để trở thành bất kỳ thứ gì khác hơn là thao tác cuối cùng. Ngoài ra, FWIW, tôi đã thử nhấn phím hoặc phím khi tin nhắn nhấp nháy, nhưng không có sự khác biệt nào.Scroll
Lock
Pause/
Break


4
Không journalctl -b(với quyền root) cung cấp cho bạn chính xác điều đó, tức là xem văn bản chính xác của những tin nhắn này khi chúng xuất hiện trong chuỗi khởi động ?
don_crissti

2
Tùy thuộc vào hệ thống của bạn, bạn có thể tìm thấy các tin nhắn trong tệp/var/log/boot.log
meuh

2
@Theophrastus: Tôi bắt đầu thấy lý do tại sao rất nhiều người dùng Linux ghét systemdvà tôi sắp tham gia hàng ngũ của họ ... Tôi đã chỉnh sửa fn 4 của mình để đánh vần (thậm chí nhiều hơn) tại sao journalctl --boot | grep -i fail, chẳng hạn, không phải là gì Tôi đang tìm.
kjo

3
kjo, sự khác biệt duy nhất mà tôi thấy giữa các thông báo trong khi khởi động và những thông tin được đăng nhập vào journallà sự hiện diện của [OK]/ [FAILED]. Các tin nhắn là giống hệt nhau. Cách đúng để chẩn đoán / khắc phục sự cố các đơn vị bị lỗi là thông qua systemctl, chỉ để bạn biết. Tôi không biết liệu bạn có thể tạm dừng quá trình khởi động thông qua phím tắt không (họ nói CTRL + S / CTRL + Q sẽ hoạt động nhưng không, ít nhất là không phải trên i915 / KMS). Tuy nhiên, bạn có thể Vô hiệu hóa xóa tin nhắn khởi động và cuộn qua các tin nhắn đó trên TTY1 bằng Shift + PGUp / Xuống.
don_crissti

2
Có thể Q / A sau đây cung cấp một cái gì đó: superuser.com/questions/480470/
Khăn

Câu trả lời:


1

console=tty0 console=ttyS0,115200n8Thay vào đó, bạn có thể đặt một đối số dòng lệnh kernel (đại loại như ) để gửi chúng tới bàn điều khiển nối tiếp, và sau đó thiết bị nghe trên cổng nối tiếp có thể chỉ cần đăng nhập nó, vì đó chỉ là một dòng văn bản.

Và systemd khá ngớ ngẩn nếu nó không đăng nhập thứ này. Openrc thực hiện điều đó trong /var/log/rc.log. Ngoài ra, nếu nó không phải là systemd, có lẽ bạn có thể sửa đổi inittab để không đặt getty / Xorg ở đó trên tty1 và ngăn mọi thứ (như Xorg) chuyển sang nơi khác và văn bản cũ có thể được giữ nguyên (giống như nó đã làm pre-systemd openSUSE). Hoặc sao chép nó sang một tty khác (mà tôi nghĩ là syslog đang làm điều đó chứ không phải inittab ... và bạn có thể thấy nhiều trình cài đặt linux đang làm điều này trên tty9 +) Nếu nó chuyển đi và quay lại, nó sẽ không cuộn lại (shift + pgup ), nhưng có thể sẽ có một trang đầu ra. Có lẽ ai đó biết nhiều hơn về systemd biết tương đương mới với inittab và bạn có thể thay đổi điều đó.


Nếu bạn đọc các bình luận, bạn sẽ thấy systemdnó ghi lại những thứ này.
don_crissti
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.