【发布时间】:2011-11-26 04:09:27
【问题描述】:
我有一堆脚本用于跨多个服务器启动类似的进程。我想将它们浓缩为一个名为“START”的 Python 脚本,但是当它通过 ssh 运行时会发生一些奇怪的事情。
$ ./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
【问题讨论】:
标签: python ssh subprocess