Как предотвратить запуск заданий cron в Debian в определенное время? («игровой» / «режим производительности»)

12

Похоже, я установил logcheck как задание cron, и всякий раз, когда он запускается grep, logcheckзанимает около ¼ моего процессора.

Теперь у меня есть определенное время, в течение которого мне нужна полная загрузка процессора, и чтобы моя система занимала как можно меньше ресурсов, за исключением определенных процессов / процессов (которые я, возможно, мог бы как-то указать).

Можно ли перевести мой Debian 9.1 с машиной KDE в какой-то режим производительности (или «игровой режим»), который не позволяет процессам, явно не запущенным пользователем, занимать много системных ресурсов, снижает нагрузку на фоновые процессы и, самое главное, : задерживает задания cron до тех пор, пока этот режим снова не остановится?

mYnDstrEAm
источник
6
Простым решением было бы не запустить logcheck в задании cron, а вместо этого написать собственный скрипт и запустить его в задании cron. В сценарии сначала выполните все необходимые проверки, а затем запустите logcheck в конце сценария, если все проверки пройдены.
SauceCode
5
Проверьте приоритет. Если он был уменьшен до 19, он работает только тогда, когда процессору больше нечего делать.
Турбьёрн Равн Андерсен

Ответы:

18

Если «определенные времена» не являются фиксированными, то есть вы хотите указать вручную, когда ваша система входит и выходит из «режима производительности», вы можете просто остановиться и запустить cron:

sudo systemctl stop cron

предотвратит запуск любых заданий cron и

sudo systemctl start cron

снова включит их.

Вы также можете проверить, anacronвместо этого cron, возможно, будет проще настроить глобально таким образом, чтобы это соответствовало вашим потребностям.

Стивен Китт
источник
12

Я бы рассмотрел два подхода

  1. Оставьте расписание нетронутым, но запустите все cronзадания nice, и, возможно, даже ionice:

    0 * * * *    root    ionice -c3 nice /some/command and parameters
    
  2. Запретить любую cronработу в определенное время. Помните, что любой пользователь, который может создать (или удалить) файл флага, может управлять этим подходом. Это могло бы работать , если вы хотите иметь режим игры , который устанавливается по требованию , путем добавления touchи rmкоманды для запуска сценария вашей игры. (Возможно, вам придется использовать, /tmpа не /var/run, но тогда он тривиально открыт для любого пользователя.)

    0 18 * * *      root    touch /var/run/no_cron
    0 19 * * *      root    rm -f /var/run/no_cron
    
    0 * * * *       root    test ! -f /var/run/no_cron && /some/command...
    

После настройки ни один из подходов не требует root-доступа. Более того, вы можете заранее решить, какие работы должны быть предметом этого контроля, а какие нет.

roaima
источник
1
Верный. Зачем узкое место в процессе, когда доступно много процессоров? Приоритеты ОС включаются, когда есть дефицит, а не произвольно.
MSalters
Я не верю, что -c3 -n7комбинация имеет смысл, по крайней мере, в Linux. Класс незанятого планирования не имеет приоритетов.
садовод
@gardenhead упс, вы правы. Я использую -c2 -n7себя, но когда я бросил класс, чтобы бездействовать для этого ответа, я пропустил, чтобы удалить приоритет.
роайма