2016-10-03 27 views
0

如何防止长时间运行的内存密集型基于tar的备份脚本被杀死?如何防止长时间运行的备份作业被杀死

我每日执行这样的命令cron作业:

tar --create --verbose --preserve-permissions --gzip --file "{backup_fn}" {excludes}/2> /var/log/backup.log 

其写入外部USB驱动器。通常情况下,生成的文件为100GB,但是在升级到Ubuntu 16之后,现在日志文件显示该进程被杀死了25%左右,大概是因为它占用了大量内存和/或系统负载过重。

我该如何告诉内核不要杀死这个进程或者调整它,以免它消耗那么多资源以至于它需要被杀死?

+0

您需要编辑您的Q以显示日志的相关部分。如果你看到的只是没有任何理由或其他数据的“焦油加工过程中遇难”,那么除了向墙上扔出想法并看看有什么结果之外,我们没有办法提供帮助。你可能会更好地发布http://askubuntu.com,因为改变版本似乎是罪魁祸首。祝你好运。 – shellter

+0

一个更简单的方法...使用像'logrotate'这样的外部工具为你做日志旋转 - 压缩作业并复制相应的压缩文件.... https://support.rackspace.com/how- to/understanding-logrotate-utility/ – Hackerman

+0

@shellter,日志实际上只是说“Killed”,我只看到发生在消耗太多内存的进程中。我在其他发行版/发行版中看过它,但这是我的备份脚本第一次以这种方式死亡。 – Cerin

回答

2

如果您确定以下事实 - 由于消耗太多内存而死亡,那么您可以尝试增大/proc/sys/vm/swappiness中的值swappiness。通过增加swappiness,您可能会摆脱这种情况。你也可以尝试调整oom_kill_allocating_task,默认值为0,它试图找出胭脂记忆h task任务并杀死那个。如果您将该号码更改为1,则oom_killer将会终止呼叫任务。

如果以上都没有工作,那么你可以尝试oom_score_adj根据/proc/$pid/oom_score_adjoom_score_adj接受值范围从-10001000。降低不太可能被oom_killer杀死的值。如果您将此值设置为-1000,那么它将禁用OOM查杀。但是,你应该知道你到底在干什么。

希望这会给你一些想法。

相关问题