Ich mache ein Bild mit PhpStorm (als Teil meiner Bemühungen, portable Entwicklungsumgebung zu bauen). Alles läuft ziemlich flüssig, außer dass sich PHPStorm nicht selbst neu starten kann. Es verwendet bin/restart.py
Skript für diesen Zweck, die nicht funktioniert, wenn dockerized.Wie man einen Prozess innerhalb eines Containers neu startet/PhpStorm mit original restart.py neustarten
Dies ist der Körper des Skript:
#!/usr/bin/env python
# Waits for the parent process to terminate, then executes specified commands.
import os
import signal
import sys
import time
if len(sys.argv) < 3:
raise Exception('usage: restart.py <pid> <path> [optional command]')
signal.signal(signal.SIGHUP, signal.SIG_IGN)
pid = int(sys.argv[1])
while os.getppid() == pid:
time.sleep(0.5) // ***
if len(sys.argv) > 3:
to_launch = sys.argv[3:]
os.spawnv(os.P_WAIT, to_launch[0], to_launch)
to_launch = ['/usr/bin/open', sys.argv[2]] if sys.platform == 'darwin' else [sys.argv[2]]
os.execv(to_launch[0], to_launch)
Das Skript läuft auf die Linie mit ***
markiert - das heißt unmittelbar nach dem übergeordneten Prozess beendet.
Ich versuchte, PhpStorm mit bash
Root-Prozess, sowie mit dumb-init oder TINI Prozesse ohne Unterschied zu laufen.
Irgendwelche Ideen, was schief läuft und wie man das "repariert"? Gibt es ein bestimmtes Signal, das im Root-Prozess implementiert werden muss, oder es ist eine Art von Docker, die für solche Anwendungen nicht erlaubt?
Es ist keine Lösung, da PHPStorm Neustart nicht funktionieren würde. – Onkeltem