0

更新:脚本 A 已更新以反映 sshpass、scp、paxdiablo 和 Evert 的路径声明。因为这不能解决问题,所以我不相信这个问题是链接问题的重复。

我有一个 bash 脚本,我们称之为 A,它查找 15 分钟前创建的文件并将它们从服务器 1 移动到服务器 2。A 的代码是:

#!bin/bash
find /data/Output/*.txt -mmin +15 -exec /usr/local/bin/sshpass -p 'thepassword' /usr/bin/scp -c blowfish "{}" Server2:/data/Output \;

如果我从命令行运行代码,它会移动数据。但是,如果我创建了一个调用脚本的 crontab 文件,它就不会运行。

crontab 脚本内容如下:

0 * * * * R CMD BATCH /home/me/generate_data.txt
15 * * * * /bin/bash /home/me/move_data.sh > /dev/null 2>&1

要让 cron 调用脚本,我输入:

crontab /path/to/crontab/file.txt

crontab -l 显示作业正在运行。我也知道 cron 本身正在运行,因为 generate_data.txt 每小时都会下载数据。因此,问题似乎不是孤立的 cron 或 bash,而是它们一起工作的问题。

这个问题似乎很常见,但是这里这里这里的建议没有帮助。我努力了:

  • 权限。两个文件的权限都是 755。
  • 把它放在 /etc/cron.hourly/ 没有 .txt 结尾。
  • 在文件末尾添加一个空行。
  • 调用“bash”和“/bin/bash”。
  • 重新启动 cron。

我使用 nano 编辑此脚本。服务器 A 是 Ubuntu 14.04 LTS,服务器 B 是 Amazon Linux AMI。两者都托管在 Amazon Web Services 上。

编辑:我应该补充一点,我在第三台服务器和服务器 B 之间运行了这个进程,它工作正常,即使用这些脚本将文件从服务器 C 发送到 B。服务器 C 是 Ubuntu 12.02 LTS,服务器 A 是 Ubuntu 14.04 LTS。

我错过了什么?

4

0 回答 0