удаленная длительная команда


У меня есть простой скрипт bash, который делает только "sleep 3600" на удаленном хосте (Amazon EC2), и я использую fabric, чтобы вызвать его через fabric.оперативный.run (я не ставил никаких env.тайм-аут или env.command_timeout).

Если удаленный сценарий bash спит в течение 3600 секунд, fabric не смог вернуться после выполнения сценария bash. Я распечатал трассировку стека, и она продолжала ждать.channel.exits_status_ready() (https://github.com/fabric/fabric/blob/master/fabric/operations.py строка: 794) даже если сценарий уже вернулся.

Это происходит только для длительно работающего процесса. Я попытался заставить bash script спать в течение 120 секунд, и это сработало отлично.

Я дважды проверил открытые соединения с помощью netstat, и сеанс ssh, открытый fabric, все еще был жив.

Нужна помощь:) есть идеи, почему это происходит?

1 2

1 ответ:

Понял, просто нужно было использовать env.keepalive = 1