我有一堆脚本用于跨多个服务器启动类似的进程。我想将它们压缩成一个叫做'START'的Python脚本,但是当它通过ssh运行时会发生一些奇怪的事情。调用通过ssh创建子进程的Python脚本挂起
$ ./START APP_A
按预期工作:APP_A已启动并开始执行其操作。控制立即返回到控制台(在APP_A终止之前)。
$ ssh localhost /path_to/START APP_A
作品类型:APP_A启动并开始做它的事情,但ssh不打印任何输出到屏幕或返回到控制台控制,直到APP_A终止后。
我认为这是信号或文件句柄的问题,但我很茫然。这是Popen调用似乎造成的麻烦:
sub = subprocess.Popen(shlex.split(cmd), stdout=open(file_out, 'a+'), stderr=subprocess.STDOUT, close_fds=True)
print 'New PID:', sub.pid
我在RHEL上使用Python 2.4.3。
编辑: 包装纸的Python脚本似乎工作:
DIR="$(cd "$(dirname "$0")" && pwd)"
pushd $DIR >> /dev/null
./START $1 &
popd >> /dev/null
如何从ssh启动脚本与直接调用脚本受此影响?该脚本直接调用时工作正常。 – dmcauslan