2017-03-21 2 views
0

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?

Antwort

0

Die einfachste Lösung für Ihr Problem besteht darin, den Container neu zu starten. Dies ist der Ausgangspunkt, um einen Prozess in einen Container zu setzen.

+0

Es ist keine Lösung, da PHPStorm Neustart nicht funktionieren würde. – Onkeltem

Verwandte Themen