Это еще один очень хороший ответ Павана (многому меня научил):
Различные дистрибутивы могут перенаправлять вывод / proc / kmsg на любые физические файлы журналов или виртуальные устройства (/ dev / xxx), которые им нравятся. Но "/ proc / kmsg" является исходным источником журнала ядра, потому что ядро реализует свою операцию кольцевого буфера внутри fs / proc / kmsg.c:
static const struct file_operations proc_kmsg_operations = {
.read = kmsg_read,
.poll = kmsg_poll,
.open = kmsg_open,
.release = kmsg_release,
.llseek = generic_file_llseek,
};
Итак, как вы видите вывод:
хвост sudo -f / proc / kmsg
Но вы можете видеть только все сообщения, сгенерированные ПОСЛЕ того, как вы выполнили эту команду - все предыдущие сообщения в кольцевом буфере не будут распечатаны. И поэтому, чтобы увидеть вывод физического файла, вы можете найти пользователя «/ proc / kmsg»:
sudo lsof | grep proc.kmsg
И моя машина указала это:
rsyslogd 1743 syslog 3r REG 0,3 0 4026532041 /proc/kmsg
in:imuxso 1743 1755 syslog 3r REG 0,3 0 4026532041 /proc/kmsg
in:imklog 1743 1756 syslog 3r REG 0,3 0 4026532041 /proc/kmsg
rs:main 1743 1757 syslog 3r REG 0,3 0 4026532041 /proc/kmsg
Так что теперь это pid 1743, давайте посмотрим файлы, открытые к 1743 году:
sudo ls -al / proc / 1743 / fd
lrwx------ 1 root root 64 Dec 11 08:36 0 -> socket:[14472]
l-wx------ 1 root root 64 Dec 11 08:36 1 -> /var/log/syslog
l-wx------ 1 root root 64 Dec 11 08:36 2 -> /var/log/kern.log
lr-x------ 1 root root 64 Dec 11 08:36 3 -> /proc/kmsg
l-wx------ 1 root root 64 Dec 11 08:36 4 -> /var/log/auth.log
Итак, pid 1743 - это rsyslogd, и он перенаправляет вывод / proc / kmsg в такие файлы, как / var / log / syslog и /var/log/kern.log и т. Д.