laufenden Prozess prüfen

laufenden Prozess prüfen

Ich werde aufgefordert, Prozesse zu prüfen und zu beenden, mit denen ich nicht vertraut bin. Wenn ich also lsim Bin-Ordner bin, sehe ich mehrere Prozesse .sh. Aber ich möchte wissen, welcher Prozess mit welchem ​​Tomcat-Prozess verknüpft ist.

Gibt es eine einfache Möglichkeit, das herauszufinden?

Beispiel startmyprocess1.sh, aber wenn ich das tue, ps -ef | grep startmyprocess1wird der laufende Prozess nicht zurückgegeben.

Aber tatsächlich lautet der Name des laufenden Tomcat-Prozesses myprocess, wenn ich also tue ps -ef | grep myprocess, kann ich den laufenden Prozess sehen. Um das herauszufinden, muss ich die verantwortliche Person fragen.

Die Namen sind also unterschiedlich. Wenn das so ist, muss ich ihn mehrmals fragen. Gibt es eine bessere Möglichkeit, das herauszufinden?

Antwort1

versuchen Sie dieses hier... (nicht getestet)

ps -aux | grep "yourprocess"

Zum Beispiel,

ps -aux | grep "httpd"

Antwort2

Das Starten von myprocess innerhalb von startmyprocess.sh führtnichtBenennen Sie den Prozess nach dem zugrunde liegenden Shell-Skript. Deshalb ps -ef | grep startmyprocess1gibt Ihr Prozess kein Ergebnis zurück.

Aus diesem Grund schreiben viele Prozesse, insbesondere Daemons, ihre PID in eine Datei, damit Sie leicht auf den Prozess verweisen können. Dies kann folgendermaßen erfolgen:

#!/bin/sh
pid=`myprocess`
echo $pid > /tmp/myprocess.pid

oder Sie können abfragen $!, welche die letzte PID enthält:

#!/bin/sh
myprocess
echo $! > /tmp/myprocess.pid

und fragen Sie den Prozess anhand seiner PID ab/listen Sie ihn auf:

ps --pid $PID

Antwort3

Ich denke, Software wie „top“ wird großartige Arbeit leisten.

Typ:

top

oder

htop

Antwort4

Die Antwort von @invert hat viel erklärt, Shell-Skripts führen nur Befehle darin aus. Das bedeutet, dass Sie bei der Ausgabe von topoder nicht den Namen Ihres Shell-Skripts erhalten htop, sondern nur /proc/$PID/cmdline jeder Routine innerhalb des Shell-Skripts ausdrucken.

Außerdem verwende ich echo $!den Befehl after, um die PID dessen zu erhalten, was Sie möchten. Ich würde gerne den Befehl verwenden, pgrepwenn ich ihn brauche (oder pkill, wenn Sie ihn beenden möchten).

pgrep, pkill – Prozesse anhand von Namen und anderen Attributen nachschlagen oder signalisieren

Das pgrep grept einfach Ihre Argumente über /proc/*/cmdline und gibt passende PIDs aus. Das pkill ist mit kill kompatibel, so dass Sie jede Routine einfach mit der cmdline pkillen können.

verwandte Informationen