如何防止 Debian 中的 cron 作业在特定时间运行? (“游戏”/“性能模式”)

如何防止 Debian 中的 cron 作业在特定时间运行? (“游戏”/“性能模式”)

看起来我已将 logcheck 设置为 cron 作业,并且每当它运行时grep都会logcheck占用大约 1/4 的 CPU。

现在,我在某些时候需要我的全部 CPU 容量,并让我的系统占用尽可能少的资源,除了特定/进程(我也许可以以某种方式指定)之外。

是否可以将我的带有 KDE 机器的 Debian 9.1 设​​置为某种性能模式(或“游戏模式”),以防止用户未明确启动的进程占用大量系统资源,降低后台进程的负载,最重要的是:延迟 cron 作业直到该模式再次停止?

答案1

如果“某些时间”不固定,IE如果您想手动指定系统何时进入和离开“性能模式”,您可以简单地停止和启动cron

sudo systemctl stop cron

将阻止任何 cron 作业运行,并且

sudo systemctl start cron

将重新启用它们。

您也可以查看anacron而不是cron,以适合您的用途的方式进行全局调整可能会更容易。

答案2

我会考虑两种方法

  1. 保持调度不变,但运行所有cron作业nice,甚至可能ionice

    0 * * * *    root    ionice -c3 nice /some/command and parameters
    
  2. cron在某些时间禁止任何工作。请记住,任何可以创建(或删除)标志文件的用户都可以控制此方法。如果您想设置游戏模式,这可能会起作用一经请求,通过将touchrm命令添加到游戏的启动脚本中。 (您可能需要使用/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 访问权限。此外,您可以提前决定哪些工作应该受到这种控制,哪些工作不应该受到这种控制。

相关内容