![是否可以为 cron 守护进程执行的所有脚本分配 nice 和 ionice 优先级?](https://linux22.com/image/799331/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E4%B8%BA%20cron%20%E5%AE%88%E6%8A%A4%E8%BF%9B%E7%A8%8B%E6%89%A7%E8%A1%8C%E7%9A%84%E6%89%80%E6%9C%89%E8%84%9A%E6%9C%AC%E5%88%86%E9%85%8D%20nice%20%E5%92%8C%20ionice%20%E4%BC%98%E5%85%88%E7%BA%A7%EF%BC%9F.png)
更具体一点:
我有一台 Debian Squeeze Linux 机器,上面有一个应该可以在全球范围内使用的 Web 应用程序。到目前为止,我每晚都会执行大量耗费资源的 cronjobs(在欧洲),但对区域用户体验没有太大影响。但现在我不能承受服务器随时变慢的后果。
有没有办法强制所有 cron 脚本(cron.daily 等)继承 nice 和 ionice 优先级?
感谢您的贡献!
米格尔
答案1
答案2
您可能希望将 crond 服务设置为在已设置 nice 和 ionice 的情况下运行。
http://b.zekjur.net/2012/09/23/systemd-ionice.html
但是,我还没有测试过这个,所以我无法保证这一点。
如果这不起作用,或者没有提供足够的帮助,您将需要配置 cgroups。
答案3
您可能最好让这些 cron 作业在单独的 Linux 用户下运行,您可以将其限制为较低的优先级。假设您有这样一个用户batchuser
。在您的 中/etc/security/limits.conf
,您可能希望为该用户添加一个条目(-19 到 19,其中 19 是最低优先级):
batchuser - priority 19
然后,此用户启动的任何进程(无论是否来自 cron)都将继承此优先级。无需修改脚本,也无需设置环境或配置文件。
http://manpages.debian.org/cgi-bin/man.cgi?query=limits.conf