У меня есть несколько сценариев, которые используются для запуска похожих процессов на нескольких серверах.Я хотел бы сжать их до одного скрипта Python, называемого «START», но когда он запускается через 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
Я использую Python 2.4.3 на RHEL.
EDIT: Обтекание скрипта Pythonпохоже на работу:
DIR="$( cd "$( dirname "$0" )" && pwd )"
pushd $DIR >> /dev/null
./START $1 &
popd >> /dev/null