Что означает "> /dev/null 2>&1" или перенаправление STDIN, STDOUT и STDERR?
Существует три стандартных значения ввода и вывода для программ (их можно представить как «потоки данных», они пришли из языка программирования C).
- STDIN - ввод получают от клавиатуры (интерактивная, диалоговая программа), или из программы, обрабатывающей вывод другой программы.
- STDOUT - вывод результат программы обычно печатается в стандартной вывод
- STDERR - вывод сообщений об ошибках
Часто к ним обращаются не по имени, а по номеру (по умолчанию, если не указать номер, подразумеваться STDOUT): 0 — STDIN, 1 — STDOUT и 2 — STDERR.
Когда программа начинает выполняться, автоматически открываются пять потоков: стандартный ввод (stdin), стандартный вывод (stdout), стандартный вывод для сообщений об ошибках (stderr), стандартный последовательный порт (stdaux) и стандартное устройство печати (stdprn).
/dev/null && после выполнения без ошибок выполнить следующую коменду
[command] & — запускает команду в фоне, т.е. управление отдаётся командному интерпретатору (bash, например), а [command] будет выполняться «параллельно».
[command] && — подразумевает, что следующая команда будет выполнена только в том случае, если [command] была выполнена успешна (вернула 0).
- Пример. Если нужно получить вывод скрипта и никаких ошибок: 2>/dev/null
*/10 * * * * root /var/www/jobs/cronload.sh > /dev/null 2>/dev/null
- Пример. Использование планировщика cron в Linux. Если нужно получать только сообщения об ошибках: > /dev/null
*/10 * * * * root /var/www/jobs/cronload.sh > /dev/null
- Пример. Использование планировщика cron в Linux. Если нужно весь вывод указанной команды удалить, то есть даже при ошибках скрипт будет молчать.
*/10 * * * * root /var/www/jobs/cronload.sh > /dev/null 2>&1


