У меня есть сценарий, который вызывает нижний индекс и пытается освободить / отклонить этот сценарий, чтобы Дженкинс, вызывающий сценарий, мог успешно завершить работу. Кажется, что сценарий освобождается в командной строке, поэтому я могу выйти из системы или выполнить другие сценарии, находясь в командной строке (SSH), но Дженкинс зависает, ожидая завершения выпущенного сценария. Есть ли способ обойти это?
#!/bin/bash
/home/oracle/example/subscr.sh>temp-log.log</dev/null&
disown -h
echo "Done"
exit 0
#!/bin/bash
while [ false ]; do
echo "Still Working"
sleep "5s"
done
При этом Дженкинс просто бесконечно зависает, пока я не убью выполнение подписки.
Я могу придумать два способа сделать это.
nohup
Команда nohup
запустит подкоманду, полностью отделенную от вашего терминала, и отправит ее вывод в файл:
$ nohup ls
appending output to nohup.out
$ cat nohup.out
20111118153620
nohup.out
screen
Экран GNU может выполнять ту же функцию в этом контексте, выполняя команду с выводом, отправленным в другое место. У него также есть бонусная функция, заключающаяся в возможности повторного подключения к стандартному вводу и стандартному выводу процесса позже без его перезапуска при необходимости. (Сложно демо screen
в текстовом буфере.)