Рейтинг:0

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

флаг mg

Проблема

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

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

Пользователь -> user.sh -> SSH-to-remote -> long-running.sh

Это должно:

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

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

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

Пользователь -> user.sh -> SSH-to-remote -> init.sh -> long-running.sh

init.sh

#!/бин/баш
nohup ./long-running.sh >out.log 2>&1 </dev/null &
код=$!
отречься от $pid
хвост -f out.log &
подождите $pid

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

#!/бин/баш
для i в $(seq 30)
делать 
    эхо $i
    спать 1
сделано

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

kanehekili avatar
флаг zw
Я использую либо [tmux](https://man7.org/linux/man-pages/man1/tmux.1.html), либо systemctl. Для последнего требуется небольшой служебный файл [пример] (https://askubuntu.com/a/1336578/906933).
Рейтинг:0
флаг mg

Похоже, я нашел решение.

init.sh

#!/бин/баш
nohup ./long-running.sh >out.log 2>&1 </dev/null &
код=$!
отречься от $pid
хвост --pid=$pid -f out.log

В моем первом решении ждать не дождался как отречься удалена спецификация работы. хвост работал вечно и держал сеанс открытым.

В настоящее время ждать был удален и хвост ждет завершения процесса. Уничтожение хоста-источника убивает хвост, но не убивает длительный процесс.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.