我正在运行夜间bash脚本来同步远程文件夹(源)与本地文件夹(目标)。 我已经testing了基于rsync的这个脚本,并且它在一个root shell中工作正常。 需要一段时间,因为有一百个演出复制,但它的作品。
一旦我在crontab中使用它,我的服务器耗尽内存。
我的服务器有8GB的内存,4GB的交换空间,正如我所说的,当从一个shell手动运行脚本时,脚本永远不会运行OOM。 这是默认的Centos 5.5安装。 我可以拆分负载并同步所有第二级目录中的查找/脚本,但我想保持简单,只能同步顶级目录。
我不能做太多的testing,因为这个服务器是用来托pipe网站和其他服务,我不能把它挂在testing的目的。 你知道一个可以让cron正常完成这个工作的设置吗?
#!/bin/bash BACKUP_PATH="/root/scripts/backup" rsync -av --delete /net/hostname/source/ /export/target/ > $BACKUP_PATH/backup_results_ok 2> $BACKUP_PATH/backup_results_error
编辑:cron的configuration是默认的,如/etc/security/limits.conf,全部注释掉了。
即使limits.conf被注释掉,我build议你testing一下,以确保。 一种方法是创build一个只包含“ulimit -a | Mail -s”限制“[email protected]”的cronjob,以便将信息发送给您。 一旦你知道限制是什么,那么你可以在实际运行rsync的shell脚本中重置它们:
#!/bin/bash ulimit -d unlimited ulimit -m unlimited ulimit -s unlimited rsync [...]
问题是你需要设置你的ulimits(就像德国推荐),因为系统设置。 从cron调用脚本时,并不总是设置限制(根据分配)。 将其设置在您的脚本,它将工作。