rsync失败,但仅来自bash脚本
我有一个简单的两行bash脚本,它将csv文件(来自webapp的用户列表)复制到远程服务器rsync失败,但仅来自bash脚本,bash,rsync,Bash,Rsync,我有一个简单的两行bash脚本,它将csv文件(来自webapp的用户列表)复制到远程服务器 #! /bin/bash /home/james/bin/UserList.py >> /home/james/logs/TMTUserExportLog & date >> /home/james/logs/TMTUserExportLog rsync /home/james/data/TMTUsers.csv myserver.com:~/data/TMTtes
#! /bin/bash
/home/james/bin/UserList.py >> /home/james/logs/TMTUserExportLog & date >> /home/james/logs/TMTUserExportLog
rsync /home/james/data/TMTUsers.csv myserver.com:~/data/TMTtest.csv >> /home/james/logs/TMTUserExportLog 2>> /home/james/logs/TMTerrlog
第一个只是调用一个python脚本来生成csv文件,将其存储在/home/james/data/TMTUsers.csv中,并输出一些我存储在日志文件中的数据。第二行将文件发送到远程服务器(ssh设置为使用无密码身份验证)
现在有一件奇怪的事。当我从命令行以交互方式或作为cron作业运行此脚本时,python脚本工作正常并生成正确的文件,但rsync仅传输文件的10-15%(800kb文件中约100kb),每次似乎都在不同的点停止。没有错误输出(如您所见,我重定向到日志文件)。但是当我从命令行运行完全相同的rsync命令时,它工作得非常好(整个文件都被传输了)。我尝试使用rcp而不是rsync,同样的情况也发生了
我在本地服务器上运行Ubuntu12.04,在远程服务器上运行14.04
#! /bin/bash
/home/james/bin/UserList.py >> /home/james/logs/TMTUserExportLog & date >> /home/james/logs/TMTUserExportLog
rsync /home/james/data/TMTUsers.csv myserver.com:~/data/TMTtest.csv >> /home/james/logs/TMTUserExportLog 2>> /home/james/logs/TMTerrlog
有什么想法吗 问题在于该行中的
和:
/home/james/bin/UserList.py >> /home/james/logs/TMTUserExportLog & date >> /home/james/logs/TMTUserExportLog
&
告诉shell在后台运行UserList.py
,并在不等待它完成的情况下继续。这实际上有两个坏影响:首先,UserList.py
和date
都试图同时附加到日志,更重要的是,rsync
在UserList.py
有机会完成创建csv文件之前运行。这就是为什么它不是全部被转移的原因——当转移发生时,它不是全部存在的
修复很简单,只需丢失&
,并以可预测的顺序分别运行每个命令(注意,我假设日期应该是日志中的第一个):
谢谢,就是这样。我犯了一个愚蠢的错误