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

mYn*_*EAm 12 performance cpu cron debian laptop

它看起来像我已经Logcheck的设置为一个cron作业,每当它的运行过程中grep通过logcheck各地占用¼我的CPU。

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

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

Ste*_*itt 18

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

sudo systemctl stop cron
Run Code Online (Sandbox Code Playgroud)

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

sudo systemctl start cron
Run Code Online (Sandbox Code Playgroud)

将重新启用它们。

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


roa*_*ima 12

我会考虑两种方法

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

    0 * * * *    root    ionice -c3 nice /some/command and parameters
    
    Run Code Online (Sandbox Code Playgroud)
  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...
    
    Run Code Online (Sandbox Code Playgroud)

设置完成后,这两种方法都不需要 root 访问权限。此外,您可以提前决定哪些作业应受此控制,哪些不应受此控制。