我正在使用脚本在sudo crontab
. 该脚本执行 2 路 rsync(从 serverA 到 serverB 并反向)。重新启动两台服务器计算机后,rsync 无法在sudo crontab
. 我还设置了一个新的 cronjob 但它失败了,错误是:
rsync error: unexplained error (code 255) at io.c(600) [sender=3.0.6]
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
Run Code Online (Sandbox Code Playgroud)
但是,当从终端运行时,rync 脚本按预期工作,没有问题。请帮忙。
rsync
连接意外关闭的原因之一是超时问题,特别是当需要一段时间来计算文件校验和以检查远程主机上的差异时。
为避免此问题,您需要将这些设置添加到您的~/.ssh/config
或/etc/ssh/ssh_config
:
Host *
ServerAliveInterval 30
ServerAliveCountMax 6
Run Code Online (Sandbox Code Playgroud)
并且可选地在远程服务器上类似(在/etc/ssh/sshd_config
),例如
ClientAliveInterval 30
ClientAliveCountMax 6
Run Code Online (Sandbox Code Playgroud)
请参阅:选项ServerAliveInterval
和ClientAliveInterval
含义是什么?
鉴于几乎完全缺乏相关信息,有点难以回答,但作为一般规则,如果命令在提示符下运行,但在 cron 作业中不起作用,那是因为您需要指定命令的完整路径。Cron 作业没有正常的用户环境,这尤其意味着它们没有与普通用户相同的 PATH。