我想踢出其他以root用户身份登录的开发人员。
所以我发出
pkill -KILL -u root
然后我意识到我可能杀死了各种根进程。
我是否损坏了系统?我现在无法通过SSH进行访问。
更新:Web服务器仍在运行。但是我现在无法通过SSH连接。我不知道我做了什么。
我想踢出其他以root用户身份登录的开发人员。
所以我发出
pkill -KILL -u root
然后我意识到我可能杀死了各种根进程。
我是否损坏了系统?我现在无法通过SSH进行访问。
更新:Web服务器仍在运行。但是我现在无法通过SSH连接。我不知道我做了什么。
Answers:
一个快速的答案是,您杀死了sshd(主知道其他情况),并且将无法使用SSH登录到系统。除非您有其他访问系统的方法(例如,远程控制台,IPMI等),否则您将需要重新引导系统,这将还原SSH服务和其他服务。
希望您可以实际访问该盒子,在这种情况下,您可能只需要按一下电源按钮即可。意识到您杀死了许多进程并为某些损坏做好了准备。Linux旨在从系统崩溃中恢复,您实际上触发了“手动”崩溃。重新启动后,大多数事情应该可以恢复正常。您可能在日志文件中有各种有趣的错误消息。
长答案:
这是一个很棒的思想实验和一个很好的面试问题。“如果执行X ...会发生什么?”在您自己的私有虚拟机上尝试这很有趣,但是绝对不要在真实的盒子上进行。每个人都会犯错。记住并从错误中学习。犯错误是最好的学习方法。在生产上犯错误是一个痛苦的教训,这在您的职业生涯中偶尔会发生。
pkill -KILL -u根
此命令将向kill -9
root拥有的所有进程发送“ SIGKILL”(例如,KILL是SIGKILL的别名)。在系统上做是非常不好的事情。kill -9
除非万不得已,否则应避免。
您的命令主动杀死了root拥有的所有进程,这些进程立即被杀死,并且没有机会进行清理。要了解被杀死的内容,请使用一个类似的命令登录到运行状况良好的Linux框中,并列出root拥有的进程。通常,不需要root用户即可运行以下命令:
$ pgrep -u root -l
$ ps aux | grep root
您可能已经杀死了产生新进程的Init(PID#1)。您的系统可能无法创建新进程。因此,它可能暂时仍在运行,但病了,需要尽快修复。随着时间的流逝,该系统将越来越多。您等待的时间越长,效果就会越差。
更新:Web服务器仍在运行。但是我现在无法通过SSH连接。我不知道我做了什么。
我猜您正在使用Apache。Web服务器的子进程似乎仍在运行,因为它们不属于用户“ root”。但是,父Web服务器进程通常由root拥有,因此您将其杀死。结果,将不会产生新的子进程。暂时这会很好,因为您可能有足够的子进程来处理请求,并且通常这些子进程会一直存在,直到被杀死或崩溃为止。同样,最快的解决方法是重新启动计算机。
您很可能必须重新启动系统,因为您已经杀死了系统上的几乎所有关键服务。如何做取决于您拥有什么工具或到达数据中心的传输方式。
系统正在运行,因为内核正在运行。您无法访问sshd,因为您已经杀死了守护程序。可能init也已终止,这意味着您无法创建新进程。因此,可能无法建立新的Apache连接(已应用配置参数;))。
您无法向内核线程发送信号,这就是为什么系统正在运行,但根拥有的服务已终止,并且为了正常复活,您应该重新启动它。