如何防止长时间运行的备份作业被杀死

问题描述 投票:0回答:2

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

我有一个 cron 作业,每天运行如下命令:

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

它写入外部 USB 驱动器。通常生成的文件为 100GB,但在我升级到 Ubuntu 16 后,现在日志文件显示该进程在大约 25% 的情况下被终止,大概是因为它消耗了大量内存和/或使系统负载过大.

如何告诉内核不要终止该进程,或者对其进行调整,使其不会消耗太多需要终止的资源?

linux memory-management backup tar
2个回答
2
投票

如果您确定 - 由于消耗过多内存而被杀死,那么您可以尝试增加

swappiness
中的
/proc/sys/vm/swappiness
值。通过增加
swappiness
您也许能够摆脱这种情况。您还可以尝试调整
oom_kill_allocating_task
,默认为
0
,它会尝试找出 rouge 占用内存的任务并杀死该任务。如果您将其更改为
1
oom_killer
将终止调用任务。

如果以上方法都不起作用,那么您可以尝试

oom_score_adj
下的
/proc/$pid/oom_score_adj
oom_score_adj
接受从
-1000
1000
的值范围。降低该值不太可能被
oom_killer
杀死。如果将此值设置为
-1000
那么它将禁用 oom Kill。但是,你应该知道你到底在做什么。

希望这能给你一些想法。


0
投票

systemctl 禁用 --now systemd-oomd

systemctl 掩码 systemd-oomd

#或

易于删除 systemd-oomd

© www.soinside.com 2019 - 2024. All rights reserved.