Verso la fine della "sequenza di avvio" 1 , vedo una lunga serie di messaggi diagnostici che volano molto rapidamente, proprio prima di vedere il prompt di accesso 2 .
AFAICT, la maggior parte, se non tutte, delle linee che compongono questo output di breve durata iniziano con una delle stringhe mostrate di seguito
[ OK ]
[FAILED]
... dove OK
è in verde e FAILED
è in rosso 3 .
Questi messaggi lampeggiano troppo brevemente per consentirmi di leggere.
La mia domanda è:
C'è un modo per rendere questi messaggi più facili da leggere?
Le possibili soluzioni che vengono in mente includono (in ordine di preferenza):
- cercare (o semplicemente reindirizzare) quei messaggi alla lettera 4 in un file di registro persistente;
- abilitazione di un meccanismo di tipo paging (
Press any key to continue...
); - inserendo una pausa (di lunghezza configurabile) dopo che quei messaggi sono stati stampati;
- abilitando alcuni tasti (o combinazioni di tasti) per mettere in pausa l'output sullo schermo 5 .
EDIT: sulla base dei commenti che ho ricevuto finora, devo concludere che la parola testualmente in (1) sopra non viene capita o non viene presa sul serio, anche se ho enfatizzato il più possibile. Lo farei lampeggiare se potessi ...
EDIT2: il suggerimento che meuh ha dato nei commenti mi sembra promettente, ma non sono ancora riuscito a farlo funzionare. Ecco cosa ho fatto:
Innanzitutto, ho aggiunto quanto segue alla fine di /etc/rsyslog.conf
:
# Save boot messages also to boot.log
local7.* /var/log/boot.log
... e riavviato. Ho visto passare i soliti messaggi diagnostici, ma nessun /var/log/boot.log
file è stato creato.
Quindi, nell'evento (certamente improbabile) che /var/log/boot.log
deve esistere già prima che rsyslog
possa scrivergli, ho eseguito (come root):
touch /var/log/boot.log
chgrp adm /var/log/boot.log
chmod 640 /var/log/boot.log
... dove i comandi chgrp
e chmod
avevano lo scopo di far corrispondere la proprietà e le autorizzazioni di /var/log/boot.log
quelle di tutti gli altri file di registro in /var/log
. Quindi ho riavviato, ho visto i messaggi, ecc. Il file è /var/log/boot.log
rimasto vuoto dopo questo riavvio.
(Ho avuto lo stesso non-risultato quando ho cambiato i permessi di /var/log/boot.log
a 666
.)
Ho modificato grep
l'output journalctl --boot
e i file sotto /var/log
per qualsiasi cosa a cui potevo pensare che potesse puntare a qualcosa di sbagliato con il mio rsyslog
, ma non ho trovato nulla. (Non ho alcuna familiarità con rsyslog
, quindi sono sicuro che la mia ricerca fosse piuttosto inetta.)
È chiaro che ciò che ho fatto finora non è sufficiente per abilitare la registrazione desiderata. Ora sto cercando ciò che mi manca. Tuttavia, non sono stato in grado di trovare molta documentazione rilevante. Ad esempio, rsyslog.conf(5)
né si rsyslogd(8)
degna né di spiegare ciò che local7
è ( rsyslog.conf(5)
è almeno abbastanza gentile da menzionarlo una volta, senza fornire ulteriori informazioni).
Edit3
Informazioni 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
Ulteriori informazioni potenzialmente rilevanti:
$ 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 Vale a dire ciò che accade quando riavvio la macchina.
2 FWIW, multi-user.target
è il mio valore predefinito.
3 Il testo rimanente è tutto in bianco su uno sfondo nero. Questo vale per il successivo prompt di accesso.
4 Trovo assolutamente inaccettabile qualsiasi soluzione che non mi consenta di visualizzare il testo esatto di questi messaggi così come sono comparsi durante la sequenza di avvio. Dal momento che, invariabilmente, non ho una profonda familiarità con qualunque di questi messaggi diagnostici si riferisca, non è possibile per me riconoscere tutti i modi in cui le informazioni di base trasmesse dal messaggio originale possono essere parafrasate, diffuse su più altri messaggi , incluso in altri messaggi, ecc. (Solo cercando online l' esatta formulazione del messaggio originale, ho qualche speranza di trovare una soluzione al problema.) Tutto ciò che ho provato finora, incluso journalctl -b
e dmesg
non è riuscito a darmi i messaggi originali alla lettera. Ad esempio, quando eseguo l'avvio posso vedere solo un rosso FAILED
, ma journalctl --boot | grep FAILED | wc -l
ritorna 0
e journalctl --boot | grep -i FAILED | wc -l
ritorna 1086
. Nessuno di questi è quello che sto cercando.
5 Nel mio sistema, avrei meno di un secondo per premere un tale tasto o una combinazione di tasti, e non è possibile avvisare quando inizia questo breve intervallo. A meno che uno non sia in grado di configurare la durata dell'intervallo durante il quale deve avvenire una tale pressione dei tasti, qualsiasi soluzione basata sulla pressione dei tasti è troppo poco pratica per essere qualcosa di più di una manovra di ultima istanza. Inoltre, FWIW, ho provato a premere il tasto o il tasto quando i messaggi lampeggiavano, ma nessuno dei due faceva differenza.Scroll
LockPause/
Break
/var/log/boot.log
systemd
e sto per unirmi ai loro ranghi ... Ho modificato il mio fn 4 per precisare (anche di più) perché journalctl --boot | grep -i fail
, ad esempio, non è quello che Sto cercando.
journal
è la presenza di [OK]
/ [FAILED]
. I messaggi sono altrimenti identici. Il modo giusto per diagnosticare / risolvere i problemi relativi alle unità guaste è tramite systemctl
, solo per questo. Non so se è possibile mettere in pausa il processo di avvio tramite una scorciatoia da tastiera (dicono che CTRL + S / CTRL + Q dovrebbe funzionare ma non funziona, almeno non su i915 / KMS). Tuttavia, è possibile disabilitare la cancellazione dei messaggi di avvio e scorrere i messaggi su TTY1 con Shift + PgUp / Down.
journalctl -b
(come root) darà esattamente questo, cioè vedere il testo esatto di questi messaggi come apparivano durante la sequenza di avvio ?