如何在Debian中阻止cron作业在特定时间内运行?(“游戏” /“表演模式”)


12

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

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

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


6
一个简单的解决方案不是在cron作业中运行logcheck,而是编写一个自定义脚本并在cron作业中运行该脚本。在脚本中,首先执行所需的任何检查,然后在脚本末尾运行logcheck(如果所有检查均通过)。
SauceCode

5
检查优先级。如果已降低到19,则仅在CPU无关时运行。
托尔比约恩Ravn的安徒生

Answers:


18

如果“某些时间”不是固定的,您想在系统进入和退出“性能模式”时手动指定,则只需停止和启动即可cron

sudo systemctl stop cron

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

sudo systemctl start cron

将重新启用它们。

您也可以签出anacron而不是cron,以适合您的使用方式进行全局调整可能更容易。


12

我会考虑两种方法

  1. 保持调度不变,但cronnice甚至可能在下运行所有作业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用户访问权限。此外,您可以预先决定哪些作业应受此控制,哪些则不受此。


1
正确。当有大量可用CPU时,为什么会阻塞进程?出现短缺时,操作系统优先级会立即提高,而不是任意的。
MSalters

我认为这种-c3 -n7结合是没有道理的,至少在Linux上是如此。在空闲调度类没有重点。
gardenhead'9

@gardenhead糟糕,您是对的。我用-c2 -n7我自己,但是当我将班级闲置无人时,我忽略了删除优先级的过程。
roaima
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.