Предположите, что у Вас есть начинающий в Вашей панели, которая запускает сценарий, названный foo.sh в терминальном режиме.
foo.sh, чем запускает другой сценарий, названный bar.sh в фоне.
Я сталкиваюсь с проблемами:
Во-первых: название записанного файла от bar.sh отличается.
Второй и основной: bar.sh сценарий весьма зависим, и умрите, когда терминал закрывается.
Я протестировал это на старых 16.04. машина.
foo.sh
#!/bin/bash
#read an user input
read -r -t 60 -p ":" foo
echo "$foo"
#call bar script
/home/$USER/bar.sh "10" "$foo" & disown
#show if bar.sh was started
echo $?
#sleep a short time to see the echo's
sleep 3
bar.sh
#!/bin/bash
#sleep some time
[[ -n "$1" ]] && sleep $1
#then write user input to file called output
echo "$2 - sleept $1 seconds" >> /home/$USER/output
Если время для сна в нечто больше, чем в панели, выходной файл пишут, но называют выводом? (с? в конце).
Но если время больше в панели затем, панель уничтожается, когда законченное нечто и терминал закрывается.
Какая-либо идея, как настроить правильно фоновый экземпляр bar.sh?
Другой терминал, который остается открытым, не является решением меня.
СПАСИБО!
P.S. Как предложенный комментарий, я должен задать свой вопрос здесь.
Так как Вы сказали, что это работало, я даю это как ответ с дополнительной информацией.
"nohup" не обозначает "Hungup". Как следует из названия это продолжит выполнять команду без зависания, даже если сессия будет разъединена. Это привыкло к командам выполнения на удаленном сервере, который взял бы путь долгое время для завершения (резервное копирование DB и т.д.).
Обычно, журналы сценария (если таковые имеются) хранятся в ~/nohup.out файл. Но можно принять решение получить журналы, или путем добавления или замены журналов старого содержания новым".>" Единственный больше, чем знак заменит старые журналы новым".>>" дважды больше, чем знак добавит журналы в конец файла.
Я использую это ниже формата для выполнения того же самого в crontab. В этом случае я заменяю старые журналы./path/to/script_folder/script_name.sh> /path/to/script_folder/logs/script_name.log 2> &1