在一个CentOS设置我有这样的脚本:
#! /bin/bash mysqldump --all-databases | gzip > /dumps/sql`date +"%Y-%m-%d-%$ scp `ls -t | head -1` root@backup:/media/storage/backup/
机器configuration了授权的ssh密钥,所以不需要密码。 如果我运行它(/斌/ bash的mysql.sh)它的工作原理,但在cronjob只有mysqldump进行。 scp命令失败。
我在哪里寻找解决这个问题?
听起来像scp不会从~/.ssh目录中选取你的密钥对。 尝试这个:
env HOME=/path/to/your/home scp -v $(ls -t | head -1) root@backup:/media/storage/backup/ > /tmp/scp.log 2>&1
如果不起作用,请在这里发布scp.log 。
在许多情况下,由于环境问题,从命令行但不从cron运行的脚本会失败。 如果你正在使用ssh代理或设置scp需要在你的环境中运行的信息,你需要在你的脚本中明确地设置它们,或者源代码.bashrc(或者任何文件设置你的variables)。 cron默认不会使用你的rc文件,所以你的环境是非常光鲜的。
我认为,首先,你应该检查你的cron的日志是否有错误,也许你可以在这里复制日志的一小部分,以便更好地排除故障。
你可以试着用下面的命令来改变“date”命令:
$(date+ \%F)
并再次尝试设置cronjob 😉