我在 ssh 会话中运行一个rsync
命令nohup
,但过了一会儿它返回此错误:
rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at rsync.c(549) [generator=3.0.9]
rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at rsync.c(549) [receiver=3.0.9]
我没有亲自终止该进程,我认为没有其他进程可以终止该进程。我还使用 将其运行在前台nohup
。我使用 是nohup
因为无论出于何种原因 ssh 会话终止,该rsync
进程都不会终止。
什么原因导致终止?
操作系统是 Debian Wheezy。
答案1
这是一个老问题,信息有限,但我认为发生的事情不是 rsync 问题(因为 rsync 不会自行 sigkill)。
我遇到了类似的问题,结果发现是内存问题。内核中的内存不足管理通过查看虚拟内存使用量除以总运行时间来确定要终止哪个进程。
根据传输文件的大小和数量,Rsync 可能会消耗大量内存,并且其运行时间值会很低。当内核调用 select_bad_process() 时,这会增加其分数。
启动 rsync 后,使用一个记录 rsync 内存使用情况的简单脚本检查内存使用情况:
while [ 1 ]; do
pidstat -r -G rsync >> stat.log
free >> stat.log
done
另外,在 rsync 终止时检查 dmesg,如果存在 OOM 错误,您就会看到它们。