Ловушка "" HUP против Nohup? Как запустить часть сценария оболочки в режиме nohub?

Я хочу запустить сценарий оболочки в выходные дни, но я хочу убедиться, что если терминал потеряет соединение, мой сценарий не будет прерван. Я использую nohup для всего вызова скрипта, но я также хочу выполнить некоторую часть моего скрипта таким образом, чтобы, если кто-то закрыл мой терминал, мой скрипт по-прежнему работал в фоновом режиме. Вот простой пример:

#!/bin/bash

echo "Start the trap" 
trap " " HUP 
echo "Sleeping for 60 Seconds"
sleep 60 echo "I just woke up!"

Подскажите пожалуйста что мне делать? Ловушка " " HUP, похоже, не работает, когда я закрываю вкладку терминала.

2 ответа

Рассматривали ли вы использование screen вместо nohup подход?

Откройте сеанс экрана и выполните скрипт как обычно. Отключиться от сеанса, используя Ctrl-a Ctrl-d,

Когда вы вернетесь, вы можете присоединиться к сеансу, используя screen -r или, возможно, screen -ls и выбрав правильный сеанс для восстановления.

Также см.: Как подключиться к отключенному сеансу SSH

Уверен, что вы хотите trap "" HUP, не trap " " HUP,

trap [-lp] [[arg] signal_spec...]

ARG - это команда, которая должна быть прочитана и выполнена, когда оболочка получает сигнал (ы) SIGNAL_SPEC. Если ARG отсутствует (и предоставляется один SIGNAL_SPEC) или `-', каждый указанный сигнал сбрасывается до своего исходного значения. Если ARG является пустой строкой, то каждый SIGNAL_SPEC игнорируется оболочкой и вызываемыми командами.

" " не пустая строка, но "" является.

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