У меня есть VPS, который почти ежедневно выполняет перезагрузку. Сегодня мне наконец удалось получить подсказку из моих журналов
May 12 03:14:49 sshd[19379]: Did not receive identification string from 173.212.118.167
May 12 03:25:03 sshd[19489]: Did not receive identification string from 82.248.74.71
May 12 03:25:15 sshd[19493]: Did not receive identification string from 98.249.28.85
May 12 03:30:25 shutdown[19545]: shutting down for system halt
May 12 03:30:29 init: Switching to runlevel: 0
May 12 03:30:34 saslauthd[1654]: server_exit : master exited: 1654
May 12 03:30:34 sshd[1656]: Received signal 15; terminating.
May 12 03:30:34 sshd[1655]: Received signal 15; terminating.
May 12 03:30:35 kernel: Kernel logging (proc) stopped.
May 12 03:30:35 kernel: Kernel log daemon terminating.
May 12 03:30:35 syslog-ng[364]: Termination requested via signal, terminating;
May 12 03:30:35 syslog-ng[364]: syslog-ng shutting down; version='3.2.2'
May 12 03:34:23 syslog-ng[388]: syslog-ng starting up; version='3.2.2'
May 12 03:34:24 ifup: lo
May 12 03:34:24 ifup: lo
May 12 03:34:24 ifup: IP address: 127.0.0.1/8
Похоже, процесс произвольно перезагрузился. Кажется, что это происходит примерно в одно и то же время дня. К счастью, время простоя довольно короткое.
Я проверил задания cron, чтобы узнать, есть ли соответствующая запись, но ее не было. Странно то, что перезагрузка обычно выполняется с уровнем запуска 6, а не с 0. Уровень запуска 0 должен выключить сервер, но вместо этого он снова оживает через несколько секунд.
Что я могу сделать, чтобы узнать об этом больше?
Согласно вашему журналу, что-то вызывает shutdown
утилита для завершения работы. Я бы (временно) заменил /sbin/shutdown
с помощью сценария, который регистрирует кучу информации, примерно следующего вида:
#!/bin/bash
set > /shutdown.env
ps auxfwww > /shutdown.ps
Затем вы можете искать PPID=
в /shutdown.env
, и просмотрите /shutdown.ps
чтобы увидеть, что это был за pid.
(Не забудьте chmod +x
сценарий после того, как вы вставили на место. Я бы запустил его один раз, чтобы убедиться, что он работает).
Эта строка в вашем журнале init: Switching to runlevel: 0
не означает, что уровень запуска 6 не использовался: вероятно, так и было, поскольку ваш сервер перезагружается.
Проверьте last reboot
чтобы узнать, регулярное ли это мероприятие. Если да, перепроверьте все задания cron; last также покажет вам, кто был авторизован при перезагрузке сервера.
Проверьте журналы sudo (возможно, вам потребуется включить ведение журнала sudo).
Вы также можете попробовать использовать механизм аудита auditctl -a entry,always -S reboot
описанный Вот