Як запобігти виконанню завдань cron протягом певного часу в Debian? ("режим гри" / "продуктивність")


12

Схоже, у мене налаштування журналу реєстрації є завданням cron і кожного разу, коли він запускається grep, logcheckзаймає близько ¼ мого процесора.

Зараз у мене є певний час, протягом якого мені потрібен мій повний процесорний потенціал, і моя система може зайняти якомога менше ресурсів, за винятком конкретних / процесів (які я, можливо, могла б якось вказати).

Чи можна встановити мій Debian 9.1 з KDE-машиною в якийсь режим продуктивності (або "Ігровий режим"), який запобігає явно запущеним користувачем процесам не забирати багато системних ресурсів, знижує навантаження фонових процесів і головне : затримує завдання cron, поки цей режим знову не припиниться?


6
Простим рішенням було б не запускати logcheck у роботі cron, а натомість написати користувальницький сценарій та запустити це у cron завдання. У сценарії спочатку виконайте всі необхідні перевірки, а потім запустіть logcheck в кінці сценарію, якщо ці перевірки проходять усі.
SauceCode

5
Перевірте пріоритет. Якщо його набрали до 19, він працює лише тоді, коли процесор не має нічого іншого робити.
Thorbjørn Ravn Andersen

Відповіді:


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...
    

Після налаштування жоден підхід не вимагає кореневого доступу. Крім того, ви можете заздалегідь вирішити, які робочі місця підлягатимуть цьому контролю, а які не повинні.


1
Правильно. Чому вузьке місце, коли є багато процесора? Пріоритети ОС починають виникати, коли є дефіцит, а не довільно.
MSalters

Я не вважаю, що -c3 -n7комбінація має сенс, принаймні в Linux. Клас простого планування не має пріоритетів.
садок

@gardenhead, на жаль, ви праві. Я використовую -c2 -n7себе, але коли я скинув клас в режимі очікування для цієї відповіді, я пропустив пріоритет.
roaima
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.