it-swarm.com.de

Wie kann ich den Ursprung eines Prozesses finden und ihn dauerhaft stoppen?

Ich habe ein Ubuntu-System mit einem Apache-Server. Ich habe einen Prozess gefunden cache.sh was meiner Meinung nach ein Crypto-Mining-Prozess sein könnte und der die ganze Zeit auf meinem Server läuft und bis zu 98% der CPU verbraucht. Dies führt dazu, dass andere Dinge wie MySQL und Apache nicht mehr funktionieren.

Ich habe den Befehl top verwendet, um herauszufinden, dass cache.sh verbraucht die gesamte CPU.

Ich habe versucht, den Prozess zu beenden, aber er wird nach einiger Zeit wieder ausgeführt.

Ich habe dann gelernt, dass ich den Prozess anhalten kann, anstatt ihn zu beenden, und das funktioniert ganz gut, aber ich möchte immer noch herausfinden, was es ist, und es dauerhaft loswerden. Nach dem Neustart des gesamten Servers startet dieser Vorgang automatisch.

Der Prozess cache.sh wird unter dem Benutzer www-data ausgeführt, der auch für die Verarbeitung des unter demselben Benutzer ausgeführten Apache-Prozesses verantwortlich ist.

Was kann ich tun, um den Ursprung dieses Prozesses zu ermitteln und das Problem zu beheben?

2
Deepak

Schaue auf die /proc Verzeichnis für den cache.sh Prozess. Jeder Prozess hat ein /proc/<pid>/ Verzeichnis, in dem Informationen wie folgt gespeichert werden:

  • cwd - Link zum c urrent w orking d irectory
  • fd - ein Verzeichnis mit Links zu den geöffneten Dateien ( f ile d escriptors)
  • cmdline - Lies es, um zu sehen, welche Befehlszeile zum Starten des Prozesses verwendet wurde
  • environ - die Umgebungsvariablen für diesen Prozess
  • root - ein Link zu dem, was der Prozess als Root-Verzeichnis ansieht. Es wird sein / sofern nicht chrooted.

Laufen ps auxf zeigt Ihnen, wer was gegabelt hat, damit Sie eine bessere Vorstellung davon bekommen, wie Ihr Prozess lautet.

Laufen lsof -p PID zeigt die Dateien, die vom laufenden Prozess geöffnet werden.

Quelle: Linux: Woher wissen, wo ein Prozess gestartet wurde und wie er gestartet wurde?

3
karel