Я попытался запустить пример Java-программы, используя следующую командную строку. Однако я не знаю, для чего используется задняя часть < /dev/null &
?
java -cp /home/weka.jar weka.classifiers.trees.J48 –t train_file >& log < /dev/null &
Я попытался запустить пример Java-программы, используя следующую командную строку. Однако я не знаю, для чего используется задняя часть < /dev/null &
?
java -cp /home/weka.jar weka.classifiers.trees.J48 –t train_file >& log < /dev/null &
Ответы:
< /dev/null
используется для мгновенной отправки EOF в программу, чтобы она не ожидала ввода ( /dev/null
нулевое устройство - это специальный файл, который отбрасывает все записанные в него данные, но сообщает, что операция записи выполнена успешно, и не предоставляет никаких данных любой процесс, который читает из него, немедленно получая EOF). &
это специальный тип разделителя команд, используемый для фона предыдущего процесса.
Не зная вызываемой программы, я не знаю напрямую, почему требуется запускать ее таким образом.
</dev/null
отключает вход программы от терминала. Некоторые программы реагируют по-разному в зависимости от того, к чему подключен их стандартный вход. С помощью перенаправления </dev/null
программа может сказать, что ее ввод не поступает от терминала, и сразу же получит указание конца файла, если попытается прочитать со своего стандартного ввода.
Одиночество &
в конце заставляет программу выполняться в фоновом режиме. Это означает, что вы сразу получите запрос оболочки. Без &
, вы получите приглашение оболочки только тогда, когда программа завершит выполнение.
Обратите внимание, что автономный не &
имеет отношения к >&
. >&
является оператором перенаправления (в tcsh, bash и zsh), который перенаправляет как стандартный вывод программы, так и стандартную ошибку программы на имя файла, указанное после оператора (здесь log
).
Другими словами, что делает оболочка, когда видит эту командную строку:
/dev/null
( нулевое устройство ).log
(создавая файл, если он еще не существует, и обрезая его, если он существует).java
в $PATH
.-cp
, /home/weka.jar
, weka.classifiers.trees.J48
, –t
, train_file`.