linux – 如何在服务器负载较低时运行作业?
发布时间:2021-05-27 11:57:29 所属栏目:Linux 来源:网络整理
导读:我有一个运行磁盘快照的命令(在EC2上,冻结XFS磁盘并运行EBS快照命令),该命令设置为作为cron作业定期运行.理想情况下,如果在任务计划运行时磁盘被大量使用,我希望能够将命令延迟一段时间. 我担心使用nice / ionice可能没有正确的效果,因为我希望脚本在运行时
我有一个运行磁盘快照的命令(在EC2上,冻结XFS磁盘并运行EBS快照命令),该命令设置为作为cron作业定期运行.理想情况下,如果在任务计划运行时磁盘被大量使用,我希望能够将命令延迟一段时间. 我担心使用nice / ionice可能没有正确的效果,因为我希望脚本在运行时以高优先级运行(即等待一段时间,然后快速完成). 谢谢. 更新: 这就是我最终的目标.它检查/ proc / diskstats并在当前IO活动达到0时运行我的作业,或者我们超时.当我看看我们的服务器在生产中实际获得的IO活动时,我可能不得不调整它: #!/bin/bash DEVICE=sdf # we want to make a snapshot when IO in progresses reaches this: LOW_THRESHOLD=0 TIMER=0 MAX_SEC_DELAY=120 # Get the number of IO operations in progress: ioInProgress(){ grep $DEVICE /proc/diskstats | awk '{print $12}' } # Wait for a good time to run snapshot,else timeout: while [[ $TIMER -lt $MAX_SEC_DELAY && $(ioInProgress) -gt $LOW_THRESHOLD ]]; do TIMER=`expr $TIMER + 1` sleep 0.5 done # Recording delay required: echo $TIMER echo "Executing snapshot" run-the-snapshot 解决方法我在这里发现了一个perl脚本 http://www.skolnick.org/cgi-bin/list.pl?file=serverload.pl这应该做你需要的. 你可以用一个解析正常运行时间的简单shell脚本来实现它 请注意,如果你的服务器一直很忙,有一个逃跑的过程,那么你的 如果你有内存,也许更好的想法就是在最低的操作系统上运行你的cron作业优先级,因此他们只会消耗多余的资源. (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |