2013-11-11 3 views
0

Я использую apache + django (mod_wsgi) для выполнения определенной работы.открытый терминал в окне X от apache + django

Во-первых, я пишу простой скрипт bash, который будет вызывать терминал в окне X, и выполнять некоторую команду. например:

DISPLAY=:1 gnome-terminal -e 'sleep 9999' &

Если я запускаю эту команду/скрипт в SSH сессии, то сохранить жизнь даже я выйти из системы SSH сессии. Однако, если я выполняю эту команду в коде python django. gnome-terminal запустится и немедленно закроется , потому что его родительский (сеанс apache?) Завершен?

Как запустить такую ​​команду (gnome-terminal -e 'cmd) django + apache, не убив ее? Большое спасибо.

ответ

2

Я думаю, первый вопрос: «Вы уверены, что хотите это сделать?»

Как вы пытаетесь начать процесс? Если вы звоните os.system, это определенно не сохранится, но если вы звоните os.fork(), а затем os.execv, я думаю, он выживет. Но если не работает, я думаю, вы могли бы следовать стандартным процессам демонализации, которые должны работать.

Это что-то вроде:

fork() 
in child, close open file descriptors 
open stderr, stdout, stdin (read from dev/null, write to dev/null perhaps) 
setsid() 
chdir('/') 
fork() 
in child, exec the terminal. 

Смотрите обсуждение здесь: http://code.activestate.com/recipes/66012-fork-a-daemon-process-on-unix/ режим демона

Смежные вопросы