web-dev-qa-db-fra.com

Comment trouver l'origine d'un processus et l'arrêter définitivement?

J'ai un système Ubuntu exécutant un serveur Apache. J'ai trouvé un processus cache.sh qui, à mon avis, pourrait être un processus de crypto-extraction et qui s'exécute en permanence sur mon serveur, consommant jusqu'à 98% de la CPU. Cela provoque d'autres trucs qui ne fonctionnent plus comme MySQL et Apache.

J'ai utilisé la commande top pour savoir que cache.sh consomme tout le processeur.

J'ai essayé de tuer le processus, mais il recommence à fonctionner après un certain temps.

J'ai alors appris que je pouvais suspendre le processus au lieu de le tuer et que cela fonctionnait très bien, mais je veux tout de même savoir ce que c'est et le supprimer définitivement. Après le redémarrage de l’ensemble du serveur, ce processus démarre automatiquement.

Le processus cache.sh est exécuté sous l'utilisateur www-data, qui est également responsable du traitement du processus Apache exécuté sous le même utilisateur.

Que puis-je faire pour trouver l'origine de ce processus et résoudre ce problème?

2
Deepak

Examinez le répertoire /proc pour connaître le processus cache.sh. Chaque processus a un répertoire /proc/<pid>/ où il conserve des informations telles que:

  • cwd - lien vers le c urrent w orking d répertoire
  • fd - un répertoire contenant des liens vers les fichiers ouverts ( f ile d escripteurs)
  • cmdline - lisez-le pour voir quelle ligne de commande a été utilisée pour démarrer le processus
  • environ - les variables d'environnement de ce processus
  • root - lien vers ce que le processus considère comme son répertoire racine. Ce sera / à moins d’être chrooté.

Lancer ps auxf vous montrera qui a donné quoi, pour que vous puissiez avoir une meilleure idée de ce qui appelle votre processus.

Running lsof -p PID affiche les fichiers ouverts par le processus en cours.

La source: Linux: Comment savoir où et comment un processus a été lancé?

3
karel