Назад | Перейти на главную страницу

Сценарий Bash не запускается для Jenkins при вызове индекса

У меня есть сценарий, который вызывает нижний индекс и пытается освободить / отклонить этот сценарий, чтобы Дженкинс, вызывающий сценарий, мог успешно завершить работу. Кажется, что сценарий освобождается в командной строке, поэтому я могу выйти из системы или выполнить другие сценарии, находясь в командной строке (SSH), но Дженкинс зависает, ожидая завершения выпущенного сценария. Есть ли способ обойти это?

super.sh

#!/bin/bash

/home/oracle/example/subscr.sh>temp-log.log</dev/null&
disown -h

echo "Done"
exit 0

subscr.sh

#!/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

GNU screen

Экран GNU может выполнять ту же функцию в этом контексте, выполняя команду с выводом, отправленным в другое место. У него также есть бонусная функция, заключающаяся в возможности повторного подключения к стандартному вводу и стандартному выводу процесса позже без его перезапуска при необходимости. (Сложно демо screen в текстовом буфере.)