Страницы

Поиск по вопросам

понедельник, 3 февраля 2020 г.

Разбор записи в файле задач cron

#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) Короче говоря, и обычный вывод, и вывод ошибок не будет нигде отображаться и не будет никуда записываться.

Комментариев нет:

Отправить комментарий