Ich möchte viele verschiedene Sinatra-Apps von einer zentralen (Sinatra) App aus steuern.Töte einen Child-Prozess, der sich von der Shell gelöst hat
Das Problem, das ich habe, ist egal, auf welche Weise ich exec/spawn/fork den Anruf, um es zu starten, kann ich nicht die PID des Sinatra-Servers, so dass ich töten kann (: int) es?
Dies ist aufgrund meiner Shell Exec String, die zuerst ein paar andere Befehle enthält, so bekomme ich die PID der ersten. Meine Befehlszeichenfolge ist wie
command = source ~/.profile; rbenv #{ver}; some_env=1234 ruby app.rb
Also ich die pid des sh Prozess des Sourcing-Befehl erhalten.
Die Frage ist, wie kann ich die PID des oben gestarteten Ruby-Befehls bekommen?
Ich benutze derzeit Spawn, aber habe die meisten anderen auch ausprobiert, aber ich glaube nicht, dass das das Problem ist !?
pid = Process.spawn(command)
pid # => 1234
Der Rubin App selbst beginnt
$ ps aux
1234 sh -c . ~/.profile; shell_script
4567 shell_script
ich 4567 wissen wollen !?