Очевидно, что если система будет работать несколько дней, я не смогу получить эту информацию. Я правильно понимаю здесь?
Да. Это зависит от того, сколько информации журнала генерируется, но в конечном итоге загрузочная информация будет прокручиваться с начала как кольцевого буфера ядра, так и журнала systemd. Это не указание на то, сколько времени потребуется для других систем, но у меня есть системы, время безотказной работы которых составляет сотни дней, данные журнала загрузки которых уже давно прокручиваются в верхней части журнала systemd. Это один из недостатков наличия одного гигантского комбинированного потока журналов, в который все вливается, а затем снова выходит из него.
Так что возьмите лист из FreeBSD и NetBSD и их производных. Все они имеют службы, которые запускаются один раз, при начальной загрузке сразу после монтирования локальных файловых систем, которые просто выполняют:
dmesg > /var/run/dmesg.bootТаким образом, моментальный снимок журнала ядра, который был при загрузке, доступен в
/var/run/dmesg.boot
, даже если с тех пор он прокрутил фактические журналы.Вам просто нужно написать службу systemd, которая будет делать то же самое. Используйте оболочку для перенаправления
ExecStart=/bin/sh -c "exec dmesg > /run/dmesg.boot"или что-то вроде
redirfd
Лорана Берко илиfdredir
ExecStart=/usr/local/bin/fdredir --write 1 /run/dmesg.boot dmesgнабора инструментов nosh
journalctl -k
, если вы хотите сделать снимок журнала systemd, а не только журнала ядра, и сделать его службойType = oneshot
. Либо сделайте его желательным дляmulti-user.target
, либо сделайте его службойDefaultDependencies = no
, которая требуется дляbasic.target
.Обратите внимание, что его не нужно заказывать после монтирования локальной файловой системы (например,local-fs.target
). Такой порядок необходим для FreeBSD и OpenBSD, потому что/ var / run
может быть дисковой файловой системой с ними. В операционных системах systemd/ run
- это «файловая система API», которая создается при начальной загрузке перед любыми службами.(Подход, который я предпочитаю лично, состоит в том, чтобы не иметь в первую очередь гигантского центрального потока журналов. Выделенная служба использует только канал журнала ядра и ведет журнал в частном каталоге журналов. намного длиннее , чтобы достичь точки, где информация о последней загрузке прокручивается сверху. И он также содержит журналы загрузки с предыдущих загрузок.
Однако это намного сложнее настроить в мире systemd чем oneshot, который пишет
/run/dmesg.boot
. Однако это просто в мире семейства daemontools. Это тривиальное упражнение в использовании таких инструментов, какfifo-listen
иklog-read
илиsocklog
. Передача вывода через демон журнала, который записывает в частный, надежно ограниченный по размеру, автоматически вращающийся каталог журнала, входит в стандартную комплектацию с daemontools / runit / s6 / nosh / perp-managed service.)
Все это выглядит примерно так, как должно быть,... единственное, что вы не упомянули, это то, есть ли у машины, с которой вы пытаетесь подключиться, закрытый ключ? Возможно, он не сохранен там, где должен быть (например, ~/.ssh/id_rsa
) - если это не так, то для подключения необходимо использовать следующую команду:
ssh -i <path to identity file> <username>@<hostname>
Также рекомендую вы не копируете идентификаторы «вручную», если вам это действительно не нужно и вы не знаете, что делаете, а просто используете ssh-команды, которые облегчают вам это:
ssh-keygen
ssh-copy-id <username>@<hostname>
Вот и все. Это сначала создаст новый файл идентификации, а затем скопирует его на хост. Если у вас уже где-то есть файл идентификации, вы, конечно, также можете использовать флаг -i <путь к файлу идентификации>
с ssh-copy-id.
РЕДАКТИРОВАТЬ: Я только что заметил, что вы упомянули, что подключаетесь к Putty - это немного отличается, и у шпатлевки есть собственный механизм для этого, генератор ключей PuTTY.
Сгенерируйте и сохраните закрытый и открытый ключи: закрытый — это id_rsa из нашего предыдущего примера, который остается на клиентской машине, публичный — это id_rsa.pub, который необходимо скопировать в ~/.ssh/authorized_keys на сервере.
Сделав это, вам нужно добавить закрытый ключ на вкладке Connection/SSH/Auth для сеанса, который вы используете.