kill -TERM über Programmname
Maxwell
- webserver
0 Andreas Görtz0 rob0 zipdrive0 Mathias Brodala0 flowh
0 Maxwell
Hallo,
sorry, bin sehr wissbegierig ;-)
mit kill -TERM <pid> kann man ja einen Prozess über seine pid killen.
wie geht das nach Dateiname, also z.B.:
ich starte über perl test.pl ein Script
auf der anderen Konsole will ich den (oder alle mit demselben Namen) Prozess killen:
"kill -TERM test.pl"
-bash: kill: test.pl: arguments must be process or job IDs
wie geht das nur mit dem Programmnamen?
Grüsse,
Maxwell
Hi,
"kill -TERM test.pl"
-bash: kill: test.pl: arguments must be process or job IDswie geht das nur mit dem Programmnamen?
das sollte mit killall gehen:
$ man killall
Gruß,
Andreas.
Hi!
wie geht das nur mit dem Programmnamen?
Mit kill gar nicht.
Nimm killall statt kill. Dann kannst du den Namen eingeben.
(Solltest du nicht mit der GNU-Version von killall arbeiten, dann ist der Link oben nicht der zu der richtigen Man-Page. Hier wäre die Man-Page zur BSD-Version von killall.)
Schöner Gruß,
rob
Hi,
wie geht das nur mit dem Programmnamen?
Na indem du erstmal über den Namen die PID herausfindest und den Prozess dann killst. Das geht z.B. mit einer einfachen Pipe ala: ps -A | grep myProgName | kill
Mit ps -A listest du alle im System laufenden Prozesse auf und übergibst stdout an stdin von grep, das dir den Prozess herausfiltert, den du haben willst. Das Ergebnis dieser Suche wird an die stdin von kill weitergeleitet, was den Prozess dann beendet. Das ist die einfachste Lsg über den Bash - Interpreter, man kann das bestimmt besser mit einer "echten" Programmiersprache machen.
Grüße aus Leipzig
Hallo zipdrive.
wie geht das nur mit dem Programmnamen?
Na indem du erstmal über den Namen die PID herausfindest und den Prozess dann killst. Das geht z.B. mit einer einfachen Pipe ala: ps -A | grep myProgName | kill
Der erste Teil ließe sich wie folgt verkürzen:
$ pgrep myProgName | kill
Einen schönen Samstag noch.
Gruß, Mathias
Hallo Mathias.
Der erste Teil ließe sich wie folgt verkürzen:
$ pgrep myProgName | kill
Das ganze Teil ließe sich wie folgt verkürzen:
$ pkill myProgName
;)
Servus,
flowh
Hallo flowh.
Der erste Teil ließe sich wie folgt verkürzen:
$ pgrep myProgName | kill
Das ganze Teil ließe sich wie folgt verkürzen:
$ pkill myProgName
;)
Minimalisten unter sich. Danke für den Tipp.
Einen schönen Sonntag noch.
Gruß, Mathias
Minimalisten unter sich. Danke für den Tipp.
Ich glaube das kann man noch soweit verkürzen, indem man den Prozess garnicht erst startet, dann brauch man garnichts einzugeben.
Grüße aus Leipzig
Hallo,
Klasse! killall war genau das, wonach ich gesucht habe! Danke.
Hm. Ich hab jetzt ein SH-Script unter /etc/init.d/test, welches das Perl-Programm "test" aufruft. Mit killall werden beide gekillt. Eigentlich kein Problem, aber beim test-perl-script kann ich die aktuell über sh gestartete Instanz über $SIG{TERM}="IGNORE" vom getermed werden schützen.
Gibt halt jetzt eine kleine Unschönheit: Da das SH-script gekillt wird, kommt man gleich wieder auf die konsole und das perl-programm mit SIGTERM IGNORE macht eine sekunde danach einen output.
Ich möchte gern die Konsole "frei" haben, das heisst, die Meldung muss vor der Rückkehr zur Konsole aus dem Perlscript raus.
Jetzt seh ich zwei Lösungen:
kann ich Lösung 2 irgendwie umsetzen?
Grüsse,
Maxwell