Не завершать удаленный сценарий при уничтожении локального вызывающего процесса

Проблема

Вызываю долго работающий процесс по ssh. И нужно, чтобы этот процесс не был убит. Пользователь может убить начальный процесс на своем хосте, и я ничего не могу с этим поделать.

Как сделать так, чтобы удаленный процесс не был убит, если первоначальный процесс был убит?

User -> user.sh -> SSH-to-remote -> long-running.sh

Он должен:

  1. Выводить вывод удаленного процесса
  2. Выход при завершении удаленного процесса
  3. Не убивать удаленный процесс, если первоначальный процесс будет убит
  4. Сделать выходной файл журнала доступным

Первое неполное решение

Я думал о чем-то, используя nohup, но пока это не сработало:

User -> user.sh -> SSH-to-remote -> init.sh -> long-running.sh

init.sh

#!/bin/bash
nohup ./long-running.sh >out.log 2>&1 </dev/null &
pid=$!
disown $pid
tail -f out.log &
wait $pid

long-running.sh (содержимое для тестирования)

#!/bin/bash
for i in $(seq 30)
do 
    echo $i
    sleep 1
done

Это решение не не решает 2. Он не завершается при выходе из удаленного процесса.

0
задан 13 December 2021 в 14:17

0 ответов

Другие вопросы по тегам:

Похожие вопросы: