시작 시퀀스가 ​​끝날 때 날아다니는 메시지를 어떻게 일시 중지(또는 캡처)할 수 있습니까?

시작 시퀀스가 ​​끝날 때 날아다니는 메시지를 어떻게 일시 중지(또는 캡처)할 수 있습니까?

"Boot Sequence" 1 이 끝날 무렵 , Login Prompt 2 가 표시되기 직전에 일련의 긴 진단 메시지가 빠르게 지나가는 것을 볼 수 있습니다 .

AFAICT, 전부는 아니지만 대부분의 이 임시 출력을 구성하는 줄은 아래 표시된 문자열로 시작됩니다.

[  OK  ]
[FAILED]

... OK녹색이고 3은FAILED 빨간색입니다 .

메시지가 너무 짧게 깜박여서 읽을 수 없었습니다.

내 질문은 다음과 같습니다

이러한 메시지를 더 쉽게 읽을 수 있는 방법이 있습니까?


마음속에 떠오르는 가능한 해결책은 다음과 같습니다(선호도 순).

  1. 이 메시지 보내기(또는 단순히 리디렉션)말 그대로4 일부 영구 로그 파일;
  2. 페이징 메커니즘 활성화( Press any key to continue...);
  3. 이 메시지를 인쇄한 후 일시 중지(구성 가능한 길이)를 삽입하십시오.
  4. 특정 키(또는 키 조합)를 활성화하여 화면 출력을 일시 중지합니다 5 .

편집: 지금까지 받은 의견을 바탕으로 다음과 같은 결론을 내려야 합니다.말 그대로위 (1)의 내용은 최대한 강조하려고 노력했음에도 불구하고 이해되지 않거나 심각하게 받아들여지지 않습니다. 가능하다면 플래시로 만들텐데...


편집 2: 제안의견에 제공된 내용은 나에게 유망해 보이지만 아직 작동시키지 못했습니다. 이것이 내가 한 일입니다:

먼저 마지막에 다음을 추가했습니다 /etc/rsyslog.conf.

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

...그리고 재부팅하세요. 일반적인 진단 메시지가 표시되지만 /var/log/boot.log파일이 생성되지 않습니다.

그런 다음 이벤트 에 쓰기 위해 이벤트가 /var/log/boot.log이미 존재 해야 하는 경우(확실히 가능성은 낮지만) 루트로 다음을 실행합니다.rsyslog

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

...여기서 chgrpAND chmod명령의 목적은 소유권과 권한을 /var/log/boot.log그 아래에 있는 다른 모든 로그 파일의 것과 일치 시키는 것입니다 /var/log. 그런 다음 재부팅하고 메시지 등을 보았습니다. /var/log/boot.log재부팅 후에도 파일은 여전히 ​​비어 있습니다.

/var/log/boot.log(권한을 로 변경해도 동일한 결과가 나오지 않습니다 666.)

내 문제와 관련이 있을 수 있다고 생각되는 항목을 찾기 위해 아래 grep의 출력 journalctl --boot과 파일을 편집 했지만 아무 것도 찾지 못했습니다. (전혀 익숙하지 않아서 검색이 매우 무능했음을 확신합니다.)/var/logrsyslogrsyslog

지금까지 내가 수행한 작업으로는 필수 로깅을 활성화하는 데 충분하지 않은 것 같습니다. 나는 지금 내가 놓친 것을 찾고 있습니다. 그러나 아직 이에 대한 많은 문서를 찾지 못했습니다. 예를 들어, 그것이 무엇인지 설명하지도 않았고 겸손 rsyslog.conf(5)하지도 않았습니다 ( 적어도 추가 정보를 제공하지 않고 한 번 언급할 만큼 정중하게).rsyslogd(8)local7rsyslog.conf(5)


편집 3

출시 정보:

$ 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

편집 4

관련될 수 있는 기타 정보:

$ 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은 내 컴퓨터를 (다시) 시작할 때 일어나는 일입니다.

2, FWIW가 multi-user.target내 기본값입니다.

3 나머지 텍스트는 검정색 바탕에 흰색입니다. 후속 로그인 프롬프트에서도 마찬가지입니다.

4나는 찾았다전혀 받아들일 수 없다부팅 과정 중에 나타나는 이러한 메시지의 정확한 텍스트를 볼 수 없는 솔루션입니다. 나는 항상 이러한 진단 메시지가 무엇을 의미하는지 잘 알지 못하기 때문에 원본 메시지가 전달하는 기본 정보가 해석되고, 다른 여러 메시지에 전파되고, 다른 메시지에 포함되는 모든 방식을 식별하는 것은 불가능합니다. 등(온라인 검색만 가능)정확한 표현원본 메시지의 내용 문제에 대한 해결책을 찾을 수 있을까요? ) 원본 메시지를 포함하여 지금까지 시도했지만 journalctl -b실패한 모든 것dmesg말 그대로. 예를 들어 스타트업을 실행하면 빨간색만 보이는데 FAILED, 가 journalctl --boot | grep FAILED | wc -l반환 됩니다 . 이 중 내가 찾고 있는 것은 없습니다.0journalctl --boot | grep -i FAILED | wc -l1086

5 내 시스템에서는 이러한 키 또는 키 조합을 1초 미만 동안 눌러도 이 짧은 간격이 언제 시작되는지에 대한 사전 경고를 받지 못합니다. 이러한 키 입력이 발생해야 하는 간격 기간을 구성할 수 없는 경우 키 누르기 기반 솔루션은 너무 비실용적이므로 최후의 수단으로만 사용해야 합니다. 또한 FWIW, 메시지가 깜박이는 동안 또는 키를 눌러 보았지만 아무런 차이가 없었습니다.Scroll
Lock
Pause/
Break

답변1

커널 명령줄 인수( 와 유사 console=tty0 console=ttyS0,115200n8)를 설정하여 직렬 콘솔로 보낼 수 있으며 직렬 포트에서 수신 대기하는 장치는 단순히 텍스트 스트림이므로 간단히 기록할 수 있습니다.

systemd가 이 내용을 기록하지 않으면 바보가 될 것입니다. Openrc는 /var/log/rc.log에서 이 작업을 수행합니다. 또한 systemd가 아닌 경우 tty1에 getty/Xorg를 넣지 않고 아무것도 방지하도록 inittab을 수정할 수 있습니다(예: openSUSE 이전에 systemd가 했던 것처럼). 아니면 다른 tty에 복사하세요(이 작업을 수행하는 것은 inittab이 아닌 syslog인 것 같습니다... 그리고 많은 Linux 설치 프로그램이 tty9+에서 이 작업을 수행하는 것을 볼 수 있습니다). 다시 전환하면 뒤로 스크롤되지 않습니다(shift+pgup). 그러나 한 페이지의 출력이 있을 수 있습니다. 어쩌면 systemd에 대해 더 많이 아는 사람은 inittab에 해당하는 새로운 기능을 알고 있으므로 이를 변경할 수 있습니다.

관련 정보