linux – 杀死所有根进程时,它对服务器有什么影响?

还有其他开发人员以root身份登录,我想踢出去.

所以我发了

pkill -KILL -u root

然后我意识到我可能杀死了各种根进程.

我的系统损坏了吗?我现在无法通过SSH访问它.

更新:
Web服务器仍在运行.但我现在无法通过SSH连接.我不知道我做了什么.

解决方法

一个快速的答案是你杀死了sshd(并且lord知道还有什么)并且无法使用SSH重新登录系统.除非您有其他方法可以访问系统(例如远程控制台,IPMI等),否则您需要重新启动系统,以恢复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拥有,您将其杀死.因此,新的子进程不会产生.这一段时间没问题,因为您可能有足够的子进程来处理请求,通常这些子进程将一直存在,直到它们被杀或崩溃.同样,最快的解决方法是重启机器.

相关文章

查找全部容器的日志文件 $ sudo find /var/lib/docker/conta...
Linux日志文件中列属性的详细解析
在Linux系统中没有duf命令,如何有效地管理磁盘空间?
深入探讨EncryptPad在Linux操作系统中的功能和优势
原理和应用场景:Linux中ttyload工具的工作原理和实际用途
深度解析SELinux的三种策略类型