Страницы

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

воскресенье, 7 апреля 2019 г.

Разбор записи в файле задач 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-го пункта включительно, как дальше работает интерпретатор?


Ответ

Что за магическое 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" - дескриптор файла, в который будет организовано перенаправление.

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

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