Mit ps -ef | grep Tomcat
habe ich einen Tomcat-Server gefunden, der gerade läuft. Ich habe kill -9 {id}
ausprobiert, aber es wird "Kein solcher Prozess" zurückgegeben. Was mache ich falsch?
Hier ist ein Beispiel:
Admins-MacBook-Pro:test-parent tom.maxwell$ ps -ef | grep Tomcat
2043706342 39707 39695 0 3:40PM ttys000 0:00.00 grep Tomcat
Admins-MacBook-Pro:test-parent tom.maxwell$ kill -9 39707
-bash: kill: (39707) - No such process
Es ist nicht erforderlich, die PID (Prozess-ID) von Tomcat zu kennen, um sie zu beenden. Sie können den folgenden Befehl verwenden, um Tomcat zu beenden:
pkill -9 -f Tomcat
ps -ef | Grep Tomcat | awk '{print $ 2}' | xargs töten -9
https://Gist.github.com/nrshrivatsan/1d2ea4fcdcb9d1857076
Teil 1
ps -ef | grep Tomcat => Alle Prozesse mit Tomcat grep abrufen
Teil 2
Sobald wir Details zum Prozess haben, leiten wir sie in Teil 2 des Skripts weiter
awk '{print $ 2}' | xargs kill -9 => Holen Sie sich die zweite Spalte [Prozess-ID] und töten Sie sie mit der Option -9
Hoffe das hilft.
Tomcat läuft nicht. Ihre Suche zeigt Ihnen den Grep-Prozess, der nach Tomcat sucht. Zu dem Zeitpunkt, zu dem Sie diese Ausgabe sehen, läuft grep natürlich nicht mehr, daher ist die PID nicht mehr gültig.
Wie bereits erwähnt, haben Sie den grep-Prozess gesehen. Wenn Sie die Ausgabe auf Tomcat selbst beschränken möchten, haben Sie zwei Alternativen
das erste gesuchte Zeichen in eine Zeichenklasse einschließen
ps -ef | grep '[t]omcat'
Dies sucht auch nach Tomcat, jedoch fehlt der grep [t]omcat
-Eintrag, da er nicht mit [t]omcat
übereinstimmt.
verwenden Sie ein benutzerdefiniertes Ausgabeformat mit ps
ps -e -o pid,comm | grep Tomcat
Dies zeigt nur die PID und den Namen des Prozesses ohne die Prozessargumente an. Grep wird also als grep
und nicht als grep Tomcat
aufgeführt.
geben Sie einfach den folgenden Befehl im Terminal ein
ps -ef |grep 'catalina'
kopieren Sie den Wert der Prozess-ID, geben Sie dann den folgenden Befehl ein und fügen Sie die Prozess-ID ein
kill -9 processid
ps -ef
listet alle derzeit laufenden Prozesse auf
| grep Tomcat
übergibt die Ausgabe an grep
und sucht nach Instanzen von Tomcat. Da grep
ein Prozess selbst ist, wird er von Ihrem Befehl zurückgegeben. In Ihrer Ausgabe werden jedoch keine Tomcat-Prozesse angezeigt.
Im Tomcat/bin/catalina.sh
fügen Sie die folgende Zeile unmittelbar nach dem Ende des Kommentarbereichs hinzu:
CATALINA_PID=someFile.txt
um eine laufende Instanz von Tomcat zu beenden, können Sie Folgendes verwenden:
kill -9 `cat someFile.txt`
ps -Af | grep "Tomcat" | grep -v grep | awk '{print$2}' | xargs kill -9
Das hat für mich funktioniert:
Schritt 1: Echo ps aux | grep org.Apache.catalina.startup.Bootstrap | grep -v grep | awk '{ print $2 }'
Dieser obige Befehl gibt "process_id" zurück.
Schritt 2: töten Sie -9 Prozess-ID
// Diese Prozess-ID ist identisch mit Schritt 1: Ausgabe
Um einen Prozess nach Namen zu beenden, verwende ich Folgendes
ps aux | grep "search-term" | grep -v grep | tr -s " " | cut -d " " -f 2 | xargs kill -9
Der tr -s " " | cut -d " " -f 2
ist derselbe wie awk '{print $2}'
. tr
Unterdrückt die Tabulatoren in ein einzelnes Leerzeichen und cut
wird mit <SPACE>
als Trennzeichen versehen und die zweite Spalte wird angefordert. Die zweite Spalte in der ps aux
-Ausgabe ist die Prozess-ID.
Ich musste den activeMQ-Java-Prozess bei vielen Java-Prozessen auf dem Server beenden, und dieser Prozess wird von einem bestimmten Benutzer gestartet (Benutzername ist activemq).
ps -ef | grep "activemq" | awk '{print $2}' | xargs kill -9
wie @Aurand zu sagen hat, läuft Tomcat nicht. du kannst den ... benutzen
ps -ef |grep Java | grep Tomcat
Befehl zum Ignorieren der ps
-Programme.
arbeitete für mich in den Shell-Scripte-Dateien.
kill -9 $(ps -ef | grep 8084 | awk 'NR==2{print $2}')
NR steht für die Anzahl der Datensätze in der Eingabedatei .awk
kann Text suchen oder ersetzen
das funktioniert sehr gut (Tomcat-Prozesse finden und gewaltsam beenden)
ps -ef | grep Tomcat | awk '{print $2}' | xargs kill -9