所以我发了
pkill -KILL -u root
然后我意识到我可能杀死了各种根进程.
我的系统损坏了吗?我现在无法通过SSH访问它.
更新:
Web服务器仍在运行.但我现在无法通过SSH连接.我不知道我做了什么.
解决方法
希望你有物理访问盒子,在这种情况下你可能只需要按下电源按钮.意识到你杀了很多进程,并为一些腐败做好准备. Linux旨在从系统崩溃中恢复,并且您实际上触发了“手动”崩溃.重启后大多数东西应该恢复正常.您可能在日志文件中有各种有趣的错误消息.
答案很长:
这是一个伟大的思想实验和一个很好的面试问题. “如果你做了X会发生什么……”在你自己的私人虚拟机上尝试这是一件有趣的事情,但永远不应该在一个真正的盒子上完成.每个人都会犯错误.记住并从错误中吸取教训. Making mistakes is the best way to learn.在生产中犯错是一个痛苦的教训,偶尔会发生在你的职业生涯中.
pkill -KILL -u root
此命令将向root拥有的所有进程发送’SIGKILL'(例如kill -9.KILL是SIGKILL的别名).在系统上做这件事非常糟糕.除非作为最后的手段,否则应避免杀死-9.
你的命令强行杀死了root拥有的所有进程,进程被立即杀死,没有机会清理.要了解您所杀死的内容,请使用类似其中一个命令登录健康的Linux框并列出root拥有的进程.您通常不需要root用户来运行这些命令:
$pgrep -u root -l $ps aux | grep root
您可能已经杀死了生成新进程的Init(PID#1).您的系统可能无法创建新进程.因此,它现在可能继续发挥功能,但病了,需要尽快修复.随着时间的推移,系统将变得越来越恶心.你等待的时间越长,它就越糟糕.
UPDATE: Web server is still running. But I can’t connect by SSH now. I have no idea what I’ve done.
我猜你正在使用Apache.看来web服务器的子进程仍在运行,因为它们不归用户’root’所有.但是,父Web服务器进程通常由root拥有,您将其杀死.因此,新的子进程不会产生.这一段时间没问题,因为您可能有足够的子进程来处理请求,通常这些子进程将一直存在,直到它们被杀或崩溃.同样,最快的解决方法是重启机器.