Как запустить, сценарий правильно от терминала начинающего выполнил сценарий в Ubuntu?

Предположите, что у Вас есть начинающий в Вашей панели, которая запускает сценарий, названный 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. Как предложенный комментарий, я должен задать свой вопрос здесь.

1
задан 4 April 2020 в 15:20

1 ответ

Так как Вы сказали, что это работало, я даю это как ответ с дополнительной информацией.

"nohup" не обозначает "Hungup". Как следует из названия это продолжит выполнять команду без зависания, даже если сессия будет разъединена. Это привыкло к командам выполнения на удаленном сервере, который взял бы путь долгое время для завершения (резервное копирование DB и т.д.).

Обычно, журналы сценария (если таковые имеются) хранятся в ~/nohup.out файл. Но можно принять решение получить журналы, или путем добавления или замены журналов старого содержания новым".>" Единственный больше, чем знак заменит старые журналы новым".>>" дважды больше, чем знак добавит журналы в конец файла.

Я использую это ниже формата для выполнения того же самого в crontab. В этом случае я заменяю старые журналы./path/to/script_folder/script_name.sh> /path/to/script_folder/logs/script_name.log 2> &1

0
ответ дан 7 April 2020 в 23:19

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

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