GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Messages de journal de démarrage sur Ubuntu 13.x ?

Sur Ubuntu 12.04, je peux trouver les messages du journal Upstart dans /var/log/syslog .

Commandes :

# initctl log-priority info
# initctl emit hello

Journal :

Apr  1 01:56:56 precise64 kernel: [ 8365.820425] init: Connection from private client
Apr  1 01:56:56 precise64 kernel: [ 8365.821130] init: Handling hello event

Sur Ubuntu 13.10, les messages n'apparaissent pas dans syslog ou n'importe où ailleurs sous /var/log répertoire, bien que des commandes comme logger hello travailler comme prévu. Dois-je les chercher ailleurs ? Y a-t-il un paramètre de configuration que je dois modifier quelque part ?

Il y a une question sur Server Fault de quelqu'un qui semble avoir le même problème sur Ubuntu 13.04, et plus ici et ici qui peuvent également décrire le même problème. Malheureusement, ces questions n'offrent aucune piste pour résoudre le problème.

Meilleure réponse

Modifier 2016-06-02

Si vous essayez de trouver les "messages du journal Upstart" en général, vérifiez /var/log/upstart/ . C'est là que Upstart enregistre stdout et stderr des services Upstart. Merci à la réponse de leopd pour l'avoir signalé.

Si vous recherchez des messages de journal d'Upstart lui-même, qui sont configurés par initctl log-priority et émis par initctl emit , lisez la suite !

Version courte

Les entrées du journal devraient en fait apparaître dans dmesg. Malgré cela, ils ne le font pas apparaissent par défaut dans /var/log .

Si vous les voulez dans /var/log aussi, ajoutez $KLogPermitNonKernelFacility on à la configuration de rsyslogd. Je suggère de créer un fichier personnalisé comme /etc/rsyslog.d/60-custom.conf pour éviter de modifier /etc/rsyslog.conf , puisque c'est géré par dpkg. Maintenant, les messages Upstart doivent apparaître dans /var/log/syslog , une fois que vous avez défini la log-priority d'Upstart à info ou alors.

Version longue

Cela m'a pris des jours à retrouver, mais apparemment Upstart (1.5) ne le fait pas log à syslog, c'est-à-dire qu'il n'appelle pas la fonction glibc syslog() . Au lieu de cela, Upstart se connecte au tampon circulaire du noyau, qui est ce que lit dmesg. Maintenant, je ne pensais pas que c'était possible pour que les processus de l'espace utilisateur écrivent dans ce tampon, mais apparemment ils le peuvent en écrivant dans /dev/kmsg , et c'est exactement ce que fait Upstart. Voilà donc la première partie du puzzle.

La deuxième partie est qu'il existe une croyance largement répandue selon laquelle les messages écrits dans le tampon circulaire du noyau sont automatiquement copiés dans syslog par le noyau (du moins c'est ce que j'ai toujours pensé). Il s'avère que cela est en fait fait par un démon de l'espace utilisateur, traditionnellement klogd, qui fonctionne en tandem avec syslogd. De toute évidence, rsyslogd remplace syslogd mais apparemment, il remplace également klogd (en quelque sorte :voir les notes à la fin).

La troisième partie est que les messages écrits dans le tampon en anneau du noyau depuis l'espace utilisateur sont en fait différents des messages écrits depuis l'espace noyau :ils ont une fonction différente. dmesg a quelques options qui interagissent avec ceci :-x affichera l'installation (et la priorité), tandis que -u et -k indiquez à dmesg de n'afficher que les messages d'installation de l'utilisateur et les messages d'installation du noyau, respectivement.

Connexes :Comment empêcher Unity de se souvenir de l'historique de recherche ?

Voici maintenant le point décisif :par défaut, rsyslogd ignore messages avec une fonction non-noyau lorsqu'il lit des messages à partir du tampon en anneau du noyau. L'option de configuration pertinente est $KLogPermitNonKernelFacility , qui est désactivé par défaut et doit être activé si vous souhaitez que rsyslogd traite ces messages. Notez que le reste de la configuration de rsyslogd traitera tous les messages du tampon circulaire du noyau comme ayant le kern installation, quelle que soit l'installation qu'ils avaient dans le tampon en anneau du noyau.

Plus d'informations

syslog

Le code peut écrire dans syslog en appelant la fonction glibc syslog() , décrit dans man 3 syslog . Apparemment, ces fonctions écrivent dans /dev/log . Le code peut lire depuis syslog en lisant /dev/log , et c'est ce que syslogd et ses remplaçants le font. rsyslogd lit /dev/log en utilisant son imuxsock module d'entrée.

Buffer circulaire du noyau

L'espace noyau écrit dans ce tampon en appelant la fonction noyau printk() , il est donc parfois appelé le tampon printk. L'espace utilisateur peut y écrire en écrivant dans /dev/kmsg . L'espace utilisateur peut lire à partir de ce tampon par plusieurs méthodes :il peut lire à partir de /proc/kmsg (ce que fait dmesg par défaut), ou il peut lire depuis /dev/kmsg , ou il peut appeler l'appel système syslog() , qui est décrit dans man 2 syslog et est complètement différent depuis la fonction glibc syslog() décrit dans man 3 syslog . glibc fournit en fait un wrapper à l'appel système syslog() , appelé klogctl() , pour aider à dissiper cette confusion.

Traditionnellement, klogd lit depuis l'une de ces interfaces, puis appelle la fonction glibc syslog() pour les copier dans le syslog. rsyslogd lit l'une de ces interfaces via son imklog module d'entrée mais AFAIK ne prend pas la peine d'appeler la glibc syslog() , c'est pourquoi ce n'est pas exactement comme klogd; il traite simplement la sortie de imklog tout comme il traite la sortie de n'importe quel autre module d'entrée. Il y a la mise en garde supplémentaire que tous les imklog la sortie a le kern service indépendamment des messages de service contenus dans le tampon en anneau du noyau.

Références

  • http://upstart.ubuntu.com/cookbook/#initctl-log-priority (indique à tort qu'Upstart se connecte à syslog)
  • https://www.kernel.org/doc/Documentation/ABI/testing/dev-kmsg
  • http://www.gnu.org/software/libc/manual/html_node/Overview-of-Syslog.html
  • http://www.rsyslog.com/doc/v5-stable/configuration/modules/imklog.html (Notez qu'il s'agit de la v5, utilisée dans Ubuntu 12.04. Ces options sont considérées comme héritées dans les versions récentes de rsyslog)

Ubuntu
  1. Mettre à jour la version du noyau sur les serveurs Ubuntu

  2. Sortie du noyau Linux 5.13 ! Comment installer dans Ubuntu 21.04

  3. Différence entre /var/log/messages, /var/log/syslog et /var/log/kern.log ?

  4. Enregistrer l'activité Ssh ?

  5. Les messages auditd se remplissent /var/log/messages

Comment installer le noyau Linux 5.15 sur Ubuntu 20.04

Comment vérifier la version du noyau dans Ubuntu 20.04

4 façons de se déconnecter d'une session de bureau Ubuntu

Comment installer le dernier noyau Linux 5.15 sur Ubuntu 20.04

Comment installer le dernier noyau Linux 4.8 sur Ubuntu 16.04

Comment installer le noyau Linux 4.7.2 sur Ubuntu 16.04 LTS