Запуск процесса в фоновом режиме со стандартным перенаправлением ввода и вывода

Команда была неверной. Вместо полного доменного имени первым параметром должна быть зона :

.
sudo named-checkzone example.com /var/named/example.com.zone
1
28.10.2019, 19:36
2 ответа

Для простоты я приведу пример с командой "cat" ("cat" просто читает ввод и записывает его )Когда вы вводите «cat < input», команда cat будет получать данные из файла «input». Однако, если вы наберете «cat << end _of _input», вы находитесь в состоянии (здесь -документа ). Это означает, что ваша оболочка прочитает все введенные вами строки. введите (с клавиатуры ), пока не напишите строку «конец _of _input» (большую часть времени ctrl _d также будет работать ), а затем выполнит эту команду cat с введенным вами вводом (, исключая конец строки _ввода _, конечно ), и поэтому он зависает, потому что ждет, пока вы введете ввод

enter image description here

Что касается перенаправления стандартного ввода, вам просто нужно написать «command < input _file» Для перенаправления вывода команды в файл у вас есть два варианта:

1 -"cmd > output" (обратите внимание, что есть только один ">" ), в этом случае, если файл с именем "output" уже существует, он будет перезаписан выводом вашей команды.

2 -"cmd >> output" (обратите внимание на два ">>" ):Если файл "output" существует, добавьте к нему вывод команды. Что касается того, как заставить команду получать ввод из вывода предыдущей команды, вы можете использовать «конвейер»

как простой пример :"ls | cat", это перенаправит вывод команды "ls" на ввод команды "cat". (Тот факт, что процесс выполняется в фоновом режиме, не имеет значения, если процесс может выполняться в фоновом режиме.)

Надеюсь, это поможет, удачи.

0
27.01.2020, 23:29

Ваш первый пример должен начинаться так

java Bagels < in.txt

В том виде, как он написан, выполняется Bagelsс стандартным вводом , полученным из файла in.txt¹. Если бы вы добавили один конечный амперсанд &,ваша программа будет работать в фоновом режиме, оставляя командную строку вашего терминала готовой для ввода дополнительных инструкций.

Я думаю, что ваш второй пример может быть таким, но меня несколько смущают ваши in.txtи out.txt; как правило, не рекомендуется подавать вывод одной программы на ввод другой и принимать вывод второй в качестве ввода первой.

java Bagels < in.txt | player.py > out.txt

Это делает присоединение in.txtк стандартному вводу программы Java(<ИЗ файла ), прикрепляет его стандартный вывод к стандартному вводу введите player.pyи запишите стандартный вывод вывода программы Python в файлout.txt(>В файл в режиме только для записи с усечением, замените на >>для добавления или 1<>для открытия в режиме чтения+записи без усечения ).

Наконец, чтобы ответить на вопрос, который вы написали в своем первом предложении «Есть ли способ запустить процесс в фоновом режиме с перенаправлением как ввода, так и вывода? », вы могли бы собрать все это вместе. вот так

java Bagels < in.txt > out.txt &

¹ здесь открыто в режиме только чтение -, замените на <>или 0<>на ksh93, чтобы открыть в режиме чтения+записи, хотя на самом деле крайне редко требуется иметь стандартный ввод в режиме чтения+записи

2
27.01.2020, 23:29

Теги

Похожие вопросы