Обнаружил проблему, добавив это в конец строки nohup (прямо перед &)
> foo.out 2> foo.err < /dev/null
спасибо @berndbausch за то, что указал мне правильное направление!
Вы указали команду с(/bin/bash
)по ssh
без -t
, поэтому на удаленной стороне не выделен tty. Затем происходят две вещи:
nohup
не перенаправляет стандартные потоки(как было бы при наличии tty);
SSH-сервер ожидает eof перед отключением, локальный ssh
продолжает работать.
And eof happens when there's no file descriptor by any process open on the writing end of the pipe, which typically only happens when all the processes that didn't have their stdout redirected to something else are gone.
Перенаправление стандартных потоков, подобных , которые вы сделали в своем ответе , приводит к преждевременному отключению сервера SSH.