0

我正在使用 apache + django(mod_wsgi) 来做一些工作。

首先,我编写了一个简单的 bash 脚本,它将在 X 窗口上调用终端,并执行一些命令。前任:

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

如果我在 ssh 会话中运行此命令/脚本,即使我注销 ssh 会话,它也会保持活动状态。但是,如果我在 django python 代码中执行此命令。gnome-terminal 将立即运行并关闭,因为它的父级(apache 会话?)已退出?

我怎样才能通过 django + apache 运行这样的命令(gnome-terminal -e 'cmd')而不杀死它?非常感谢。

4

1 回答 1

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/

于 2013-11-11T07:43:38.803 回答