Frage Einem Prozess einen bestimmten Namen in GNU / Linux geben?


Wie starte ich einen Prozess, so dass er einen bestimmten Bezeichner hat? ps Befehl?

UPD: Ich habe ein paar Server auf einer Box laufen. Die meisten von ihnen befinden sich im Bereitstellungsmodus. Jedoch ist man in der Entwicklung. Alle Server sind Pythonic und die Krankheit ist, dass alle Server als aufgelistet sind python im psdas macht es unmöglich killall der eine in der Entwicklung, der andere intakt lässt.

UPD: Wie David und GNUix vorgeschlagen haben, habe ich für jeden Server Symlinks zu Python-Interpreter- und Bash-Skripten erstellt.


9
2018-06-10 11:00


Ursprung




Antworten:


Das Erstellen eines Symlinks sollte den Zweck erfüllen, jedoch wäre es hilfreicher, wenn wir die Krankheit kennen und nicht das Symptom. Was genau versuchst du zu tun? Weil es vielleicht einen besseren Weg gibt

gnuix@defiant)-(08:11pm-:-06/10)--
(~)./0012
my weird program name
  PID TTY          TIME CMD
 7805 pts/1    00:00:00 zsh
14020 pts/1    00:00:00 0012
14021 pts/1    00:00:00 ps
(gnuix@defiant)-(08:11pm-:-06/10)--
(~)ln -s 0012 weird
(gnuix@defiant)-(08:12pm-:-06/10)--
(~)./weird 
my weird program name
  PID TTY          TIME CMD
 7805 pts/1    00:00:00 zsh
14046 pts/1    00:00:00 weird
14047 pts/1    00:00:00 ps
(gnuix@defiant)-(08:12pm-:-06/10)--
(~)

Aktualisieren: Basierend auf den zusätzlichen Informationen könnten Sie (ich bin mir sicher, dass es einen einfacheren Weg gibt, aber im Moment nicht zu mir kommt) Ihre Server ihre PID beim Start in eine Datei schreiben lassen, dann könnten Sie -9 | cat /var/run/devserver.pid aber dann wäre das eine Programmierfrage :)

Erneut aktualisieren: Sie könnten auch einige Shell-Tricks ausführen, um die PID der Server zu erhalten, wenn Sie sie starten. Von Anfang an könnten Sie eine Shell-Funktion namens startmyserver erstellen, die den Befehl zum Start Ihrer Server umschließt, aber auch $ einnimmt ! zu einer Datei basierend auf Startname - dann sprechen wir über Shell-Scripting, die @ ServerFault 'inbounds' ist. :-)


7
2018-06-10 11:13





Sie könnten die Binärdatei umbenennen, die Sie ausführen möchten. Sie könnten mit einem Symlink zur Binärdatei entkommen.

Wenn Sie den Namen wirklich ändern möchten, verwenden Sie am besten einen einfachen Wrapper, der argv festlegt und dann den Prozess ausführt, den Sie ausführen möchten. Habe jetzt keine Zeit, dir einen Beispielcode zu geben, aber schrei in etwa 10 Stunden laut und ich werde sehen, was ich tun kann.


4
2018-06-10 11:08



genau mein Standpunkt. Sie brauchen Code dafür (abgesehen von der Umbenennung / (sym) Verknüpfung der Binärdatei, die problematisch sein könnte, wenn sie nach argv [0] sucht) - serverhorror
Einige Binärdateien funktionieren nicht gut, wenn Sie meistens eingebettet sind (busybox, dropbear) - nhed


Das gehört nicht wirklich zu SO, weil es eine generische, keine sprachspezifische Frage ist.

Die kurze Antwort ist nicht einfach. Das heißt, es kann nicht innerhalb der Funktionalität Ihrer Shell oder procfs / sysfs erfolgen. Sie müssen ein externes Dienstprogramm verwenden, um es zu erreichen.

Es gibt eine lange Beschreibung, wie und warum Hier. Vorsicht, es ist ziemlich C-zentrisch.

Aktualisieren:

Sie sind Python, der das Spiel ändert. Ohne jetzt zu SO zu sein, wäre es wahrscheinlich einfacher, sie zu modifizieren, um sie zu nutzen diese Modul oder ein ähnlicher Ansatz.


3
2018-06-10 11:11



touche .. Ich wusste, es gab einen einfacheren Weg :) - GNUix
Der C-Code ist wesentlich ausführlicher als es aufgrund der Menge der Ausgabe sein muss. Es sollte möglich sein, es zu verkleinern, aber es tut ziemlich genau so, wie ich es vorgeschlagen habe. Nur mit etwas Code, um damit zu gehen :) Das Bit, das es fehlt, ist die Exec, um deinen Code zu laufen :) - David Pashley


Ansehen https://github.com/electrum/procname. Sie können den Prozessnamen eines Prozesses mithilfe einer Umgebungsvariablen festlegen.

Verwendungszweck:

Führen Sie Java mit den Umgebungsvariablen LD_PRELOAD und PROCNAME aus:

LD_PRELOAD = / pfad / zu / libprocname.so PROCNAME = hallo java -jar foo.jar


3
2017-11-27 09:14