Простой ответ, который я могу придумать, чтобы иметь Python использовать Popen
, чтобы запустить скрипт, похожий на:
gnome-terminal --window -e 'ant -Dport=5555 -Dhost=$IP1 -DhubURL=http://192.168.1.113:4444 -Denvironment=*firefox launch-remote-control $HOME/selenium-grid-1.0.8' &
disown
gnome-terminal --window -e 'ant -Dport=5555 -Dhost=$IP2 -DhubURL=http://192.168.1.113:4444 -Denvironment=*firefox launch-remote-control $HOME/selenium-grid-1.0.8' &
disown
# etc. ...
Там есть способ полностью Python, чтобы сделать это, но это некрасиво, работает только на Unix-подобные ОС, и у меня нет времени писать код. В принципе, subprocess.Popen
не поддерживает его, потому что предполагается, что вы хотите либо дождаться завершения подпроцесса, либо взаимодействовать с подпроцессом, либо контролировать подпроцесс. Он не поддерживает «просто запустить его и не беспокоить меня с ним когда-либо снова».
Таким образом, что делается в Unix-подобных операционных систем заключается в следующем:
- Использование
fork
нереститься подпроцесс
- Have что подпроцесс
fork
подпроцесс из своей собственной
- У процесса внучат редирект I/O до
/dev/null
, а затем используйте одну из функций exec
, чтобы запустить процесс, который вы действительно хотите запустить (возможно, сможете использовать Popen
для этой части)
- Ребенок p переходы.
- Теперь нет никакой связи между дедушкой и внуком, поэтому, если внук прекратит вас, вы не получите сигнал
SIGCHLD
, и если бабушка и дедушка прекратят это, он не убьет всех внуков.
Возможно, я не в деталях, но это суть. Предполагается, что обследование (&
) и disown
ing в bash
должно выполнить одно и то же.
Это также должно работать для нескольких, покажите свой код. – knitti
Возможно, вам придется использовать 'Popen' для открытия терминала, например, gnome-terminal, и использовать флаги для отправки ему команды, которую вы хотите запустить. Единственная проблема с этим - я не могу понять, как заставить терминал оставаться открытым, как только он завершит назначенную команду. – sholsapp
Почему он должен оставаться открытым? – knitti