Закрыл SSH-сессию — и долгий процесс упал вместе с ней, получив SIGHUP. nohup, disown и setsid решают эту проблему по-разному: один игнорирует сигнал заранее, другой отвязывает уже запущенный процесс от shell, третий сразу создаёт для процесса отдельную сессию.

Заранее защитить процесс от SIGHUP:

nohup ./long-task.sh &

Если процесс уже запущен в фоне текущего шелла:

disown -h %1

Полная изоляция — без управляющего терминала с самого начала:

setsid ./long-task.sh < /dev/null &> /tmp/task.log &

setsid создаёт новую сессию, поэтому даже disown не нужен — процесс изначально не привязан к терминалу. Это то, что systemd и tmux используют под капотом для демонизации.

#linux #bash #ssh