Мы запускаем наш Jenkins CI с помощью следующей команды bash, которую я хотел бы понять. Может кто-нибудь объяснить, что делает (единственный бит, который я получаю, это "java -jar jenkins.war"). Спасибо!
nohup java -jar jenkins.war > $HOME/jenkins.log 2>&1 < /dev/null &
nohup
означает, что он будет продолжать работать при выходе из оболочки.
>
означает перенаправление стандартного вывода в файл
Файл, в который он перенаправляется, является $HOME/jenkins.log
. Вы можете найти значение $HOME
, запустив echo $HOME
2>&1
, что означает перенаправление стандартных ошибок на стандартный вывод, поэтому в этом примере также перейдем к $HOME/jenkins.log
.
< /dev/null
означает чтение данных из /dev/null
. Поэтому, если скрипт ожидает ввода, он будет читать его вместо ожидания ввода пользователя.
А &
означает запуск в качестве фоновой задачи и возврат вас в командную строку.
Если вы хотите больше подробностей, спросите в комментариях.
nohup
отсоединяет следующую команду от текущего сеанса терминала, что предотвращает закрытие процесса при выходе из терминала.
java
затем запускает виртуальную машину Java с параметрами
-jar jenkins.war
, которые сообщают java запустить основной класс из jar-архива jenkins.war
>
пересылает стандартный вывод (который обычно появляется в терминале) в данный файл, в данном случае в $HOME/jenkins.log
2>&1
означает, что optput канала ошибок соединен с выходом стандартного выходного канала.
< /dev/null
отправляет «ничего» в качестве входного потока в команду Java.
Наконец & amp; принудительно запускает задачу так, что элемент управления возвращается к приглашению.