2. Как мне добавить крон-запись?
4. Как разносить задания cron по времени?
5. Как ограничить время CPU для определенной программы?
CRON это программа, выполняющая задания по расписанию. Позволяет неоднократный запуск заданий. Т.е. задание можно запустить в определенное время или через определенный промежуток времени. Более подробно про использование CRON и команды crontab можно почитать на http://www.codenet.ru/webmast/php/cron.php
Пожалуйста используйте панель для работы с кроном. Если вы измените крон вручную, панель затрет эти изменения. Используйте галочки "подавлять вывод"/"подавлять ошибки" чтоб избавится от назойливых почтовых сообщений от крон-демона. Они направляют в /dev/null стандартный поток вывода и ошибок. Хотя лучше исправить сами ошибки, если они есть. Вы также можете указать куда форвардить почту от крон-демона в меню "Установить переменные крона".
Если у вас возникают трудности с созданием cron-задания, вы можете воспользоваться визардом для создания cron-заданий, выберите меню "Добавить крон визардом".
Для начала определитесь, когда и как часто должно выполняться ваше задание. Затем удерживая нажатой клавишу CTRL выберите желаемые значения в списках. Если вы хотите чтобы задание выполнялось во всех значениях параметров (каждую минуту/час/день/) - выберите в окошках параметры (каждую минуту/час/день). Если вы хотите чтобы крон выполнялся каждый день каждый месяц, то в полях "дни", "месяцы" и "дни недели" можно ничего не выбирать. Если в списках параметров не выбраны значения - крон будет выполняться каждую минуту/час/день/месяц/день недели. После выбора всех необходимых значений, В поле "Команда" укажите выполняемую команду. К примеру:
/usr/local/bin/php /home/firstacc/domain.com/cron.php.
После чего нажмите [ok].
Пишите полные пути к файлам, например /usr/local/bin/wget вместо wget
Узнать, где находится файл Вы можете командой whereis, например whereis wget
Бывает что на это время на сервере уже назначено слишком много заданий, например:
все процессы запускаются одновременно и им может просто не хватить на всех ресурсов в этом случае перед командой крона вставьте небольшую задержку, например
Не запускайте 100 крон-заданий в одно и то же время. Лучше равномерно их распределите. Если надо чтоб запускалось раз или несколько раз в час - делайте это в разные минуты:
11 * * * * command - запустится на одинадцатой минуте
23,46,9 * * * * command - на 23,46 и 9 минуте соответственно.
Если есть скрипты которые надо запускать каждую минуту - распределяйте их вдоль этой минуты командой задержки sleep
* * * * * sleep 20; command - запустится на 20-й секунде минуты.
Разнесение кронов по времени позволяет снизить нагрузку на сервер.
Используя команду ulimit, например:
разрешит ffmpeg забрать максимум 30 секунд процессора. Ограничивается именно процессорное время, а не общее время, которое процесс может выполняться.
Дополнительно можно запускать с пониженным приоритетом:
где:
20 - это минимальный приоритет;
0 - нормальный приоритет (выставляется по умолчанию)