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

Это распространенная проблема, связанная с тем, что командные строки не ограничены по размеру и количеству аргументов. Обычный способ обойти эти ограничения - использовать find / xargs pipes.

Ваш случай должен работать так:

 sudo sh -c "find . -mindepth 1 -maxdepth 1 -print0 |xargs -0 du -hsx -- " |sort -rh |head

sudo требование выглядит немного хитрее, чем обычно.

12
05.09.2017, 15:45
2 ответа

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

sudo systemctl stop cron

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

sudo systemctl start cron

будет повторно включить их.

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

18
27.01.2020, 19:54

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

  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-доступа. Более того, вы можете заранее решить, какие работы подлежат такому контролю, а какие нет.

12
27.01.2020, 19:54

Теги

Похожие вопросы