仅在负载不太高的情况下运行cron作业

我需要同步两个系统,因此生产者列出了在消费者应用上创build的新实体。 它没有实时的需求(主要用于数据挖掘,所以在后面几个小时不是问题),但是当服务器已经忙于服务真实用户时,这个任务不运行是很重要的。

我试图以较低的优先级(nice -n19)运行同步服务,但是对于我所看到的,它仍然可能会伤害到性能,就好像这个同步服务运行一个大的数据库查询一样,它仍然会增加数据库上的负载过程和整个机器上

有没有一种方法来testing负载,并简单地退出,如果它太高(比如说2)以上?

理想情况下,如果cron没有处理太久,会有一些警告,因为负载永远不会低于2。

这是一个好方法还是我创造了更多的问题,我正在解决?

只需在testing条件中包装脚本。 例如:

 #!/斌/庆典
加载=`grep -o“^”。 的/ proc / loadavg`
如果[$ load -gt 2]; 然后
    出口1
科幻
 ###在这里调用你的脚本###

上面的脚本将检查1分钟的平均负载,如果大于2,它将退出。 另一方面,如果平均载荷小于或等于2,它将继续。

可以编写更复杂的testing,但概念是相同的:使用包装脚本/函数,然后调用您的自定义同步脚本。