Il a été demandé comment récupérer les logs d'un
précédent démarrage.
Je saute sur l'occasion pour dissiper quelques idées fausses.
Dans
/var/log/,
on trouve
dmesg.0. C'est l'ancien
dmesg qui a subi la rotation au démarrage.
On y trouve aussi
syslog.1 et
kern.log.1 : les anciens
syslog et
kern.log ayant subi la rotation. Mais...
Attention :
1) La rotation de syslog et de kernlog, contrairement à celle de dmesg, ne coïncide pas avec le démarrage ! Du moins, pas nécessairement.
Elle est réglée par logrotate, dans /etc/logrotate.d/rsyslog.
Qu'il soit clair que la rotation de syslog et de kernlog peut se produire
en cours de session !
Autre fait méconnu,
2) L'heure et la date connues au démarrage sont celles indiquées par le bios !
C'est donc l'heure du bios qui est alors écrite dans les logs.
Ce n'est qu'
après connexion à des serveurs (paquets tzdata et ntpdate) que le système se met à la date et à l'heure du fuseau horaire que vous avez choisi.
Conséquence 1
Les activités de votre session précédente et des jours précédents peuvent être dans kern.log et syslog, pas nécessairement dans kern.log.1 et syslog.1, syslog.2.gz
(1) etc.
Regardez d'abord la date et l'heure dans les premières lignes :
sudo cat /var/log/kern.log | head -3
sudo cat /var/log/syslog | head -3
Et c'est seulement si ça ne convient pas que vous remonterez aux fichiers précédents :
sudo cat /var/log/kern.log.1 | head -3
sudo cat /var/log/syslog.1 | head -3
Conséquence 2
Ne soyez pas étonné dans les circonstances suivantes :
votre pc a gelé et vous avez redémarré quelques instants plus tard, à, disons, 07h43.
La transition au sein d'un log doit ressembler à
[ 86412.******] bla-bla - dernière indication, peut-être pertinente quant au gel.
[ 00000.000000] bla-bla
où le premier nombre est le temps en secondes, écoulé depuis le chargement du noyau.
Et quand l'heure est indiquée, vous vous attendez donc à
<date> 07:40:22 votre-pc kernel [ 86412.******] bla-bla
<date> 07:43:19 votre-pc kernel [ 00000.000000] bla-bla
Eh bien non,
à la place de "07:43", c'est bien l'heure du bios qui sera affichée. Et la chronologie affichée dans les logs comportera un apparent
voyage dans le passé :
<date> 07:40:22 votre-pc kernel [ 86412.******] bla-bla # dernière ligne de session
<date> 05:43:19 votre-pc kernel [ 00000.000000] bla-bla # redémarrage
### 15 (disons 15) minutes plus tard :
<date> 05:58:19 votre-pc kernel [ 00900.******] ntpd (...) # connexion à un serveur horaire
<date> 07:58:20 votre-pc kernel [ 00900.******] # l'heure est à jour.
Donc l'heure indiquée par le log n'est pas nécessairement fiable.
Donc il peut être nécessaire de procéder autrement. Voici comment.
Ajouter | grep -C 3 000000 | tail -7
sudo cat /var/log/kern.log | grep -C 3 000000 | tail -7
EDIT 30/9/2018 :
Ajouter | grep -C 3 "000000]" | tail -7
sudo cat /var/log/kern.log | grep -C 3 "000000\]" | tail -7
(Ne sortir que les lignes contenant "000000
]", +3 lignes avant +3 lignes après ; et s'en tenir aux 7 dernières lignes de la sortie.)
FIN d'edit
vous donnera peut-être l'info voulue.
Sinon, comme le fichier peut faire des dizaines de milliers de lignes, on va procéder...
par sondages :
sudo cat /var/log/syslog | head -900 | tail -2
(on prend les 900 premières lignes
head -900 ; et on n'en garde que les 2 dernières
tail -2.)
Si le temps écoulé depuis le chargement du noyau est trop élevé, ou l'heure trop récente, on remonte plus haut dans le fichier :
sudo cat /var/log/syslog | head -400 | tail -2
Mais si, au contraire, le temps écoulé depuis le chargement du noyau est trop court, ou l'heure trop ancienne, on descend :
sudo cat /var/log/syslog | head -1900 | tail -2
sudo cat /var/log/syslog | head -3500 | tail -2
etc.
Et quand on a trouvé le bon moment, on augmentera le nombre de lignes conservées, pour les partager sur le forum :
sudo cat /var/log/syslog | head -3722 | tail -25
🙂
- -
Cette méthode par sondage peut bien sûr servir pour chercher un autre processus que celui qui précède le démarrage. 🙂
___
(1) Plus rarement, on souhaite explorer les logs antérieurs,
à extension .gz.
En ce cas adapter ceci :
zless /var/log/dpkg.log.2.gz | grep 4.4.0 | tail -2
(4.4.0 n'est qu'un exemple de chaîne à rechercher).