2015-05-16 4 views
1

Ive получил синтаксис в /etc/init.d/jettyЧто делает 1 <& - & mean?

#!/usr/bin/env bash 

    ... 

java -jar start.jar jetty.port=80 1<&- & 

Можете ли вы объяснить перенаправление в конце команды?

(Кстати, мой сервер Jetty перестает отвечать на запросы URL-адреса примерно через день. Я вижу, что он все еще выполняет файл WAR, поскольку он выполняет задание, которое выполняется каждые 5 минут, но веб-сервер не отвечает на URL-запросы, насколько я могу судить, используя инструменты разработчика Chrome. Поэтому я пытаюсь просмотреть журнал Jetty)

ответ

5

Это фактически две отдельные команды. Во-первых:

1<&- 

Это закрывает стандартный вывод, из bash man page:

Перенаправление оператор

[п] < & слово

используется для дублирования дескрипторов входных файлов. Если слово расширяется до одного или других цифр, дескриптор файла, обозначаемый символом n, делается копией этого файлового дескриптора. Если цифры в слове не указывают файл дескриптор , открытый для ввода, возникает ошибка перенаправления. Если слово оценивается как '-', дескриптор файла n закрывается. Если n не указано, используется стандартный ввод (дескриптор файла 0).

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

+0

Я думал, что <относится к вводу, а не к выходу? – Ray

+1

Вы можете думать об этом как о том, что «вход в stdout теперь ничто» –

+0

@Ray, '<' - вход в то, что слева от него. В этом случае дескриптор файла для 'stdout' находится слева. См. Комментарий Джоша. – lurker