После попытки выяснить, почему задача Capistrano (которая пытался запустить демон в фоновом режиме) завис, я обнаружил, что использование &&
в bash поверх ssh предотвращает запуск последующей программы в фоновом режиме. Пробовал на bash 4.1.5 и 4.2.20.
Следующее будет зависать (т.е. ждать завершения sleep
) в bash:
ssh localhost "cd /tmp && nohup sleep 10 >/dev/null 2>&1 &"
Следующее не будет:
ssh localhost "cd /tmp ; nohup sleep 10 >/dev/null 2>&1 &"
Также не будет этого:
cd /tmp && nohup sleep 10 >/dev/null 2>&1 &
Оба zsh и dash будут выполнять его в фоновом режиме во всех случаях, независимо от &&
и ssh. Это нормальное/ожидаемое поведение для bash или ошибка?