微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – Crontab run-parts

我正在查看CentOS 7上的run-parts脚本.非常类似于:

https://github.com/ikysil/run-parts/blob/master/run-parts

它似乎按顺序运行cron.hourly等目录中的所有内容,随机延迟在1到300秒之间.

我在cron.hourly中有很多脚本我必须运行我的独特设置.我想要的是所有这些都在同一时间运行但在每个之前都有随机延迟.

就像是:

directory_script_list = contents(/etc/cron.hourly)
for script in directory_script_list:
  if script_is_executeable(script):
    execute(sleep(random(1, 300)) && script) &)

我不希望服务器在每次打击时都淹没,我也不希望其中一个脚本阻止其他脚本.

这些脚本不会占用太多的cpu负载,他们主要做的是查询慢速回复的SNMP设备,其中很多都是在很多方面.有些需要很长时间才能完成,有些则非常快.也不是很多网络流量.目前有大约30个脚本,但我经常添加,更新和删除它们.

有谁知道这样的事情?

解决方法:

由于运行部件非常接近您想要的,因此您可以制作运行部件的副本并对其进行修改以使其完全符合您的要求.

例如:

# cp -a /usr/bin/run-parts /usr/local/bin/run-parts-parallel

然后添加’&’在/usr/local/bin / run-parts-parallel中的最后一个’fi’之后,你可以在这个diff中看到:

# diff -u /usr/bin/run-parts /usr/local/bin/run-parts-parallel 
--- /usr/bin/run-parts  2014-06-09 18:14:31.000000000 -0400
+++ /usr/local/bin/run-parts-parallel   2017-02-03 14:55:11.327000000 -0500
@@ -95,7 +95,7 @@
               { print; }'
        logger -i -p cron.notice -t "run-parts($1)" "finished $(basename $i)"
    fi
-   fi
+   fi &
 done

 exit 0

然后,您可以在/etc/cron.d/0hourly中更改以下行:

01 * * * * root run-parts /etc/cron.hourly

01 * * * * root RANDOMIZE=1 RANDOMTIME=300 /usr/local/run-parts-parallel /etc/cron.hourly

也可以修改脚本以使用/ etc / sysconfig / run-parts-parallel设置RANDOM *变量并将其从crontab文件删除.或者,如果您未在其他地方使用运行部件,则可以将RANDOM *变量放在/ etc / sysconfig / run-parts中,以使随机延迟成为全局认值.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐