Как приостановить (или захватить) сообщения, которые пролетают в конце последовательности запуска?

К концу «последовательности запуска» 1 , я вижу очень длинную серию диагностических сообщений, очень быстро, прямо перед тем, как я увижу приглашение для входа в систему 2 .

AFAICT, большинство, если не все, линий, составляющих этот короткоживущий выход, начинаются с любой из строк, показанных ниже

[ OK ] [FAILED] 

… где OK в зеленом цвете, а FAILED – красным 3 .

Эти сообщения слишком короткие, чтобы читать.

Мой вопрос:

Есть ли способ облегчить чтение этих сообщений?


Возможные решения, которые приходят на ум, включают (в порядке предпочтения):

  1. teeing (или просто перенаправление) этих сообщений дословно 4 в некоторый постоянный файл журнала;
  2. включение механизма подкачки ( Press any key to continue... );
  3. вставка паузы (настраиваемой длины) после печати этих сообщений;
  4. позволяя некоторым клавишам (или комбинации клавиш) приостанавливать вывод на экран 5 .

EDIT: исходя из комментариев, которые я получил до сих пор, я должен сделать вывод, что слово дословно в (1) выше либо не понимается, либо не воспринимается всерьез, хотя я подчеркиваю как можно больше. Если бы я мог …


EDIT2: предположение, что meuh дал в комментариях, кажется мне многообещающим, но я пока не смог заставить его работать. Вот что я сделал:

Во-первых, я добавил следующее в конце /etc/rsyslog.conf :

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

… и перезагрузился. Я видел, как запускались обычные диагностические сообщения, но не был создан файл /var/log/boot.log .

Затем в (предположительно маловероятном) событии, что /var/log/boot.log должен существовать уже до того, как rsyslog сможет записать на него, я выполнил (как root):

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

… где команды chgrp и chmod были предназначены для того, чтобы права собственности и разрешения /var/log/boot.log совпадали с правами всех других файлов журнала в /var/log . Затем я перезагрузился, увидел сообщения и т. Д. После этой перезагрузки файл /var/log/boot.log остался пустым.

(Я получил тот же самый результат, когда я изменил разрешения /var/log/boot.log на 666 )

Я grep journalctl --boot и файлы в /var/log для всего, что я мог придумать, что может указывать на что-то с моим rsyslog , но ничего не нашел. (Я совсем не знаком с rsyslog , поэтому я уверен, что мой поиск был довольно неумелым.)

Понятно, что того, что я сделал до сих пор, недостаточно для обеспечения нужной регистрации. Я сейчас ищу все, что мне не хватает. Тем не менее, я не смог найти много соответствующей документации. Например, ни rsyslog.conf(5) ни rsyslogd(8) объясняют, что такое local7 ( rsyslog.conf(5) , по крайней мере, достаточно rsyslog.conf(5) , чтобы упомянуть его один раз, не давая никакой дополнительной информации).


EDIT3

Информация о Distro:

 $ 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

Дополнительная потенциально релевантная информация:

 $ 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 journalctl --boot | grep FAILED | wc -l journalctl --boot | grep FAILED | wc -l возвращает 0 , а journalctl --boot | grep -i FAILED | wc -l journalctl --boot | grep -i FAILED | wc -l journalctl --boot | grep -i FAILED | wc -l возвращает 1086 . Ни то, ни другое я не ищу.

5 В моей системе у меня было бы меньше секунды, чтобы нажимать такую ​​комбинацию клавиш или клавиш, и нет предупреждения о том, когда начнется этот короткий интервал. Если вы не можете настроить продолжительность интервала, в течение которого произойдет такое нажатие клавиши, любые решения, основанные на нажатии клавиши, слишком непрактичны, чтобы быть чем-то большим, чем маневр последнего курорта. Кроме того, FWIW, я попытался нажать или прокрутить
Блокировка или пауза /
Клавиша разрыва, когда сообщения мигают, но не имеет никакого значения.

  • Systemd weirdness: невозможно добавить зависимость, существует файл
  • Как направить вывод журнала определенных единиц в определенный файл?
  • Как смонтировать / отключить SD-карту, которая была автоматически установлена ​​при загрузке?
  • Как использовать цитату и доллар с помощью systemd
  • Изменение зависимостей systemd во время загрузки
  • Загрузка заблокирована в течение 1мин 30 секунд, потому что / etc / network / interfaces
  • Пользовательская система pulseAudio
  • Запуск nginx при загрузке с помощью systemd, Raspbian 8 (jessie)?
  • One Solution collect form web for “Как приостановить (или захватить) сообщения, которые пролетают в конце последовательности запуска?”

    Вы можете установить аргумент командной строки ядра (что-то вроде console=tty0 console=ttyS0,115200n8 ), чтобы отправить их на последовательную консоль вместо этого, а затем устройство, которое прослушивает последовательный порт, может просто зарегистрировать его, так как тогда это просто поток текста.

    И systemd довольно глупый, если он не регистрирует этот материал в любом случае. Openrc делает это в /var/log/rc.log. Кроме того, если это не было systemd, вы, вероятно, могли бы изменить inittab, чтобы просто не помещать getty / Xorg там на tty1 и не позволять чему-либо (например, Xorg) переходить в другое место, а старый текст может остаться (как и на старых pre-systemd openSUSE). Или скопируйте его в другой tty (который, я думаю, syslog делает это, а не inittab … и вы можете увидеть, что многие установщики linux делают это на tty9 +). Если он отключается и возвращается, он просто не будет прокручивать назад (shift + pgup ), но, вероятно, будет иметь одну страницу вывода. Возможно, кто-то, кто знает больше об systemd, знает новый эквивалент inittab, и вы можете это изменить.

    Linux и Unix - лучшая ОС в мире.