Я понимаю, > /dev/null
перенаправляет вещи, на /dev/null
которые действует как черная дыра. Однако я не понимаю, что < /dev/null
значит. Я видел сценарий, написанный следующим образом:
nohup myprogram > foo.out 2> foo.err < /dev/null &
Итак, что < /dev/null
в приведенном выше коде означает?
вот пример, где предлагается
<&-
?Ответы:
Это гарантирует, что все потоки ввода / вывода учтены / заняты.
Таким образом, фоновый процесс ничем не «привязан» к терминалу, поэтому вы можете заниматься своими делами без попытки чтения программы из TTY, что может привести к зависанию терминала.
В этом случае, так как вы запускаете процесс через ssh из сценария оболочки, он гарантирует, что этот сценарий может перемещаться без ограничений.
источник
< /dev/null
.< /dev/null
?program </dev/null
означает, чтоprogram
он принимает свой входной аргумент (может быть входным параметром для опции или может быть входным файлом для работы) через дескриптор файла 0, то есть STDIN, из файла/dev/null
.Как вы уже знаете,
/dev/null
ничего не содержит, он будет уведомлять EOF (конец файла) о прочтении, поэтому любая программа, получающая входные данные,/dev/null
будет в основном ничего не перенаправлять в качестве входного аргумента.источник
< /dev/null
? Просто напишите это какnohup myprogram > foo.out 2> foo.err &
program
.. что он хочет как STDIN? Некоторые программы могут сделать это обязательным, поэтому вам нужно указать что-то как STDIN, в данном случае это может быть случай, когда вы просто использовали его/dev/null
как STDIN, и пусть программа выполняет обработку и помещает STDOUT и STDERR в упомянутые файлы ...