我在crontab中运行rysnc时遇到问题。它是我自己用户的crontab,因此它以我的用户身份运行,并且我设置了无密码的rsa密钥。当我在shell控制台上运行rsync作业时,它可以工作。但是当我将它导入crontab时,它表示它在/ var / log / syslog中运行,但是我没有看到该文件夹已同步。
我的crontab非常简单:
* * * * * rsync -av --delete myuser@mybox:/home/backup/ /home/backup
我认为crontab没有占用我的用户环境。如果我执行以下操作,我只能看到一些环境变量:
* * * * * env >> /tmp/my_env_variables
输出为cat /tmp/my_env_variables
LANGUAGE=en_US.UTF-8
HOME=/home/myuser
LOGNAME=myuser
PATH=/usr/bin:/bin
LANG=en_US.UTF-8
SHELL=/bin/sh
PWD=/home/myuser
我没有env变量,例如:
SSH_AUTH_SOCK=/tmp/ssh-uapL7nIOVj/agent.103170
在cron中导入我需要的env变量的正确方法是什么?
答案 0 :(得分:0)
来自man 5 crontab
:
crontab中的活动行是环境设置或cron命令。环境设置的格式为:
name = value
但是,当cron-job运行时,要求SSH代理始终存在,这将是不可靠的。如果你希望这个工作,你将需要一个无密码短语设置。您可以将服务器上的authorized_keys
中的密钥限制为仅使用特定的IP地址。