Я попытался запустить пример 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`.