#linux #bash #cron
Вот строка: # every hour 0 * * * * /usr/bin/php -d memory_limit=500M -f [wwwpath]cron/cron-hour.php > /dev/null 2>&1 Что я уже нашел: 0 * * * * формат времени из сайта просто видно что означает. /usr/bin/php указывает обработчик -d определяет INI php из параметром memory_limit=500M -f приступает к обработке файла [wwwpath]cron/cron-hour.php место, откуда берётся файл > меняем вывод результата и далее — темнота. Пожалуйста, растолкуйте с 6-го пункта включительно, как дальше работает интерпретатор?
Ответы
Ответ 1
Что за магическое something > /dev/null 2>&1? Как вы уже правильно заметили, > перенаправляет поток. Цитируя статью I/O Redirection: COMMAND_OUTPUT > # Redirect stdout to a file. # Creates the file if not present, otherwise overwrites it. # Перенаправляет stdout в файл # Создает файл, если он не существует, в противном случае, перезаписывает Обратите внимание, > перенаправляет только stdout, но помимо него есть еще два потока: stdin и stderr. Последний нас интересует больше всего. У каждого потока есть свой дескриптор: stdin: 0 stdout: 1 stderr: 2 Соответственно, нам осталось перенаправить куда-нибудь в укромное место поток stderr. Это можно сделать с помощью команды 2>. В данном случае, мы перенаправляем его в поток stdout, что эквивалентно 2>&1: M>&N # "M" is a file descriptor, which defaults to 1, if not set. # "N" is another file descriptor. # "M" - дескриптор файла. По умолчанию - 1 # "N" - дескриптор файла, в который будет организовано перенаправление.Ответ 2
/usr/bin/php -d memory_limit=500M -f [wwwpath]cron/cron-hour.php > /dev/null 2>&1 Это одна-единственная команда баша. > /dev/null означает, что вывод будет записываться в файл /dev/null (специальный файл, который всегда пуст) - то есть дескриптор STDOUT (или просто 1) будет открытым файлом /dev/null 2>&1 означает, что STDERR (2) будет просто дубликатом STDOUT (1) Короче говоря, и обычный вывод, и вывод ошибок не будет нигде отображаться и не будет никуда записываться.
Комментариев нет:
Отправить комментарий