вторник, 1 сентября 2015 г.

Внезапный ступор от ssh, su, nohup и &

Сегодня одна вещь заставила поломать голову.
Допустим, у нас есть сервер, на котором есть какой-то шелл-скрипт, который хотят выполнять вот так:

$ ssh user@host sudo ./test.sh


Скрипт, например, содержит строку вида
su -c 'nohup daemon &'


Для проверки концепции я применяю sleep 100, но это не имеет значения:

#!/bin/bash

set -x
su -c 'nohup sleep 100 2>&1 > /dev/null &' root

exit 0


Логично для обычного обывателя предположить, что при выполнении скрипта он запустит некоторую команду, отвяжет ее от терминала и выйдет. Если запустить его из обычного терминала. так и произойдет: