Wie kann ich einen Prozess mit einem anderen Namen starten?


11

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 pkillanhand des Namens zu beenden.

Die Frage ist, wie man einen Prozess mit einem Namen startet, damit ich pkillsie mit dem Namen töten kann. Ich bin auch offen für andere Lösungen.


Fragen Sie sich, wie Sie einen Prozess mit einem anderen Namen als dem normalerweise verwendeten starten können ? Oder fragen Sie nur, wie Sie einen Prozess über die Befehlszeile starten können?
Eliah Kagan

Der Prozessname wird unter Linux standardmäßig genauso angezeigt wie der Dateiname. Ich möchte weder den Standarddateinamen als Prozessnamen verwenden noch den Dateinamen bei jeder Ausführung ändern. Daher möchte ich die Prozesse mit einem bestimmten Namen starten, den ich möchte, damit ich mit 'pkill -f MyOwnName' alle Prozesse, die ich gerade gestartet habe, mit dem Namen MyOwnName auf einmal beenden kann.
Cache

Antworten:


11

Sie können die execeingebaute Shell verwenden:

bash -c "exec -a MyUniqueProcessName <command> &"

<command>Ersetzt die aktuelle Shell, es wird kein neuer Prozess erstellt. Deshalb starte ich eine neue Shell zum Aufrufen exec.

Dann können Sie den Prozess beenden mit:

pkill -f MyUniqueProcessName

Sie können mehr als einen Prozess unter demselben Namen starten und dann pkill -f <name>alle beenden.


Wie machst du rückgängig bash -c "exec -a MyUniqueProcessName <command> &"?
VNVN

1
@VNVN kannst du nicht. Wenn ein Befehl ausgeführt wurde, wurde er ausgeführt. Um es rückgängig zu machen, müssen Sie genau wissen, was es getan hat, und dies nach Möglichkeit manuell rückgängig machen. Beim Ausführen von Befehlen gibt es keine Strg + Z.
Terdon

+1. Meine Beobachtung ist: Der Name, der für verwendet wird, wird exec -a name sleep 100angezeigt, wenn ich es tue, ps -efaber nicht, wenn ich es tue pstree -p.
Trevor Boyd Smith

0

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.