Были и другие разработчики, вошедшие в систему как root, которых я хотел выгнать.
Я выпустил
pkill -KILL -u root
Потом понял, что убил наверное всякие корневые процессы.
Я повредил свою систему? Я не могу связаться с ним по SSH сейчас.
ОБНОВЛЕНИЕ: веб-сервер все еще работает. Но сейчас я не могу подключиться по SSH. Понятия не имею, что наделал.
Быстрый ответ: вы убили sshd (и господин знает, что еще) и не сможете снова войти в систему с помощью SSH. Если у вас нет другого метода получения доступа к системе (например, удаленной консоли, IPMI и т. Д.), Вам необходимо перезагрузить систему, что восстановит службу SSH и другие службы.
Надеюсь, у вас есть физический доступ к коробке, и в этом случае вам, вероятно, просто нужно нажать кнопку питания. Осознайте, что вы убили много процессов, и будьте готовы к некоторой коррупции. Linux предназначен для восстановления после сбоя системы, и вы, по сути, вызвали «ручной» сбой. Большинство вещей должно нормально восстановиться после перезагрузки. В лог-файлах могут быть всевозможные интересные сообщения об ошибках.
Длинный ответ:
Это отличный мысленный эксперимент и хороший вопрос для собеседования. «Что произойдет, если вы сделали X ...» Это забавная вещь, которую можно попробовать на своей частной виртуальной машине, но никогда не следует делать это на реальном компьютере. Все совершают ошибки. Помните и извлеките уроки из своей ошибки. Ошибки - лучший способ учиться. Ошибки на производстве - это болезненный урок, который время от времени будет происходить в вашей карьере.
pkill -KILL -u корень
Эта команда отправит SIGKILL (например, kill -9
. KILL - это псевдоним SIGKILL) для всех процессов, принадлежащих root. Это очень плохая вещь в системе. kill -9
следует избегать, кроме как в крайнем случае.
Ваша команда агрессивно уничтожила все процессы, принадлежащие пользователю root, процессы были немедленно остановлены и не получили возможности очистить. Чтобы понять, что именно вы убили, войдите в работоспособную систему Linux и перечислите процессы, принадлежащие пользователю root, используя команду, подобную одной из этих. Обычно для выполнения этих команд не требуется быть root:
$ pgrep -u root -l
$ ps aux | grep root
Возможно, вы убили Init (PID # 1), который порождает новые процессы. Ваша система может быть не в состоянии создавать новые процессы. Таким образом, он может продолжать работать, но сейчас он болен, и его необходимо отремонтировать как можно скорее. Со временем система будет становиться все хуже и хуже. Чем дольше вы ждете, тем хуже будет.
ОБНОВЛЕНИЕ: веб-сервер все еще работает. Но сейчас я не могу подключиться по SSH. Понятия не имею, что наделал.
Я предполагаю, что вы используете Apache. Похоже, что ребенок процессы веб-сервера все еще работают, потому что они не принадлежат пользователю root. Однако родительский процесс веб-сервера обычно принадлежит пользователю root, и вы его убили. В результате новые дочерние процессы не будут создаваться. Некоторое время это будет нормально, потому что у вас, вероятно, достаточно дочерних процессов для обслуживания запросов, и, как правило, эти дочерние процессы будут сохраняться до тех пор, пока они не будут убиты или не выйдут из строя. Опять же, самое быстрое решение - перезагрузить компьютер.
Скорее всего, вам придется перезагрузить систему, поскольку вы убили почти все критически важные службы в ней. Как вы это сделаете, зависит от того, какие инструменты у вас есть или какой транспорт вам нужен, чтобы добраться до центра обработки данных.
Система работает, потому что работает ядро. Вы не можете получить доступ к sshd, потому что вы убили демон. Вероятно, init тоже был прерван, что означает, что вы не можете создавать новые процессы. Таким образом, новые соединения apache могут не устанавливаться (применены параметры конфигурации;)).
Вы не можете отправить сигнал потокам ядра, поэтому система работает, но службы, принадлежащие root, были прекращены, и для нормального воскрешения вы должны перезагрузить ее.