我有一堆腳本用於跨多個服務器啓動類似的進程。我想將它們壓縮成一個叫做'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