linux – 只有在负载不太高的情况下运行cron job

我需要同步两个系统,因此生产者列出要在消费者应用程序上创建的新实体.它没有实时需求(主要用于数据挖掘,因此落后几个小时不是问题),但重要的是当服务器已经忙于为真实用户提供服务时,此任务不会运行.

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

有没有办法测试负载,如果它太高(例如2以上)就退出

理想情况下,如果cron没有处理太长时间,因为负载永远不会低于2,请提供某种警报.

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

解决方法

只需将脚本包装在测试条件中即可.例如:
#!/bin/bash
load=`grep -o "^." /proc/loadavg`
if [ $load -gt 2 ]; then
    exit 1
fi
### Call you script here ###

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

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

相关文章

在Linux上编写运行C语言程序,经常会遇到程序崩溃、卡死等异...
git使用小结很多人可能和我一样,起初对git是一无所知的。我...
1. 操作系统环境、安装包准备 宿主机:Max OSX 10.10.5 虚拟...
因为业务系统需求,需要对web服务作nginx代理,在不断的尝试...
Linux模块机制浅析 Linux允许用户通过插入模块,实现干预内核...
一、Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个...