Il y avait d'autres développeurs connectés en tant que root que je voulais supprimer.
J'ai donc émis
pkill -KILL -u root
Puis j'ai réalisé que j'avais probablement tué toutes sortes de processus racine.
Ai-je endommagé mon système? Je ne peux pas l'atteindre via SSH maintenant.
MISE À JOUR: le serveur Web est toujours en cours d'exécution. Mais je ne peux pas me connecter par SSH maintenant. Je n'ai aucune idée de ce que j'ai fait.
Réponses:
Une réponse rapide est que vous avez tué sshd (et seigneur sait quoi d'autre) et ne pourrez pas vous reconnecter au système en utilisant SSH. Sauf si vous avez une autre méthode pour accéder au système (une console distante, IPMI, etc.), vous devrez redémarrer le système qui restaurera le service SSH et d'autres services.
J'espère que vous avez un accès physique à la boîte, auquel cas il vous suffit probablement d'appuyer sur le bouton d'alimentation. Sachez que vous avez tué de nombreux processus et préparez-vous à une corruption. Linux est conçu pour récupérer d'un plantage du système, et vous avez essentiellement déclenché un plantage "manuel". La plupart des choses devraient se rétablir correctement après un redémarrage. Vous pouvez avoir toutes sortes de messages d'erreur intéressants dans les fichiers journaux.
Longue réponse:
Il s'agit d'une grande expérience de réflexion et d'une bonne question d'entrevue d'emploi. "Que se passe-t-il si vous avez fait X ..." C'est une chose amusante à essayer sur votre propre machine virtuelle privée, mais cela ne devrait jamais être fait sur une vraie boîte. Tout le monde fait des erreurs. Rappelez-vous et apprenez de votre erreur. Faire des erreurs est la meilleure façon d'apprendre. Faire des erreurs de production est une leçon douloureuse qui se produira occasionnellement dans votre carrière.
Cette commande enverra un 'SIGKILL' (par exemple
kill -9
. KILL est un alias pour SIGKILL) à tous les processus appartenant à root. C'est une très mauvaise chose à faire sur un système.kill -9
doit être évité, sauf en dernier recours.Votre commande a tué de manière agressive tous les processus appartenant à root, les processus ont été tués immédiatement et n'ont pas eu la chance de nettoyer. Pour avoir une idée de ce que vous avez tué, connectez-vous dans une boîte Linux saine et répertoriez les processus appartenant à root, en utilisant une commande comme celle-ci. Vous n'avez généralement pas besoin d'être root pour exécuter ces commandes:
Vous avez peut-être tué Init (PID # 1) qui engendre de nouveaux processus. Il est possible que votre système ne puisse pas créer de nouveaux processus. Il peut donc continuer de fonctionner pour l'instant, mais il est malade et doit être réparé dès que possible. Avec le temps, le système tombera de plus en plus malade. Plus vous attendez, plus cela empire.
Je suppose que vous utilisez Apache. Il semble que les processus enfants du serveur Web soient toujours en cours d'exécution car ils n'appartiennent pas à l'utilisateur «root». Cependant, le processus du serveur Web parent appartient normalement à root et vous l'avez tué. Par conséquent, les nouveaux processus enfants n'apparaîtront pas. Ce sera bien pendant un certain temps, car vous avez probablement suffisamment de processus enfants pour traiter les demandes, et ces processus enfants persisteront généralement jusqu'à ce qu'ils soient tués ou qu'ils se bloquent. Encore une fois, la solution la plus rapide consiste à redémarrer la machine.
la source
Vous devrez probablement redémarrer votre système car vous avez tué à peu près tous les services critiques sur celui-ci. La façon dont vous procédez dépend des outils dont vous disposez ou du moyen de transport à utiliser pour vous rendre au centre de données.
la source
Le système fonctionne car le noyau est en cours d'exécution. Vous ne pouvez pas accéder à sshd car vous avez tué le démon. L'init est probablement également terminée, ce qui signifie que vous ne pouvez pas créer de nouveaux processus. Ainsi, de nouvelles connexions Apache peuvent ne pas s'établir (paramètres de configuration appliqués;)).
Vous ne pouvez pas envoyer de signal aux threads du noyau, c'est pourquoi le système fonctionne mais les services appartenant à la racine ont été arrêtés et pour une résurrection normale, vous devez le redémarrer.
la source