Grundsätzlich möchte ich einige Prozesse dynamisch starten, die möglicherweise eigene untergeordnete Prozesse erstellen. Außerdem möchte ich eine bestimmte Gruppe von Prozessen beenden, die ich gerade erstellt habe, wann immer ich möchte.
Eine Möglichkeit, die ich mir vorstellen könnte, besteht darin, Prozesse mit einem Namen zu starten (um sie als Gruppe zu unterscheiden) und sie dann pkill
anhand des Namens zu beenden.
Die Frage ist, wie man einen Prozess mit einem Namen startet, damit ich pkill
sie mit dem Namen töten kann. Ich bin auch offen für andere Lösungen.
Antworten:
Sie können die
exec
eingebaute Shell verwenden:<command>
Ersetzt die aktuelle Shell, es wird kein neuer Prozess erstellt. Deshalb starte ich eine neue Shell zum Aufrufenexec
.Dann können Sie den Prozess beenden mit:
Sie können mehr als einen Prozess unter demselben Namen starten und dann
pkill -f <name>
alle beenden.quelle
bash -c "exec -a MyUniqueProcessName <command> &"
?exec -a name sleep 100
angezeigt, wenn ich es tue,ps -ef
aber nicht, wenn ich es tuepstree -p
.AMItac / Die Solaris-Agentur
Ich habe diesen Fall mit einem Audio-Transcodierungs-Tool. (läuft 3 mal) hat aber nur EINEN Namen.
Ich bin gefolgt. Wen´t zum bin dir vom Shell Tool und kopiere es 3 mal und gib ihm dann einen neuen Namen. tc-1, tc-2, tc-3 (es ist ein kleines Werkzeug, so dass es nicht viel Harddisc-Speicherplatz verbraucht (mit fetten Binärdateien sollten Sie die anderen genannten Methoden nicht verwenden)
Daher begann der Prozess mit einem eindeutigen Namen und kann mit diesem eindeutigen Namen beendet werden, ohne dass die Gefahr besteht, andere Transcodierungsprozesse zu beenden, die ich fortsetzen möchte.
Ein weiterer Trick könnte funktionieren ...
Fügen Sie ein # Bash-Skript Name.sh hinzu und machen Sie es ausführbar. Geben Sie dort Ihre Befehle ein und starten Sie das Bash-Skript selbst. Auf Centos wird dann der von Ihnen ausgeführte Bashscript-Name und nicht der Bin-Name selbst verwendet.
Hoffe, etwas hilft jemandem da draußen.
quelle