Crontab命令未运行

时间:2018-02-07 11:28:13

标签: mysql amazon-web-services amazon-s3 cron ubuntu-16.04

我有一个数据库备份命令,它接受一个mysql转储,然后将该转储文件上传到AWS S3,当我以普通用户身份运行该命令时,它工作正常,但是当我在cron作业中使用相同的命令时,它会失败。

我检查了系统日志,并且没有错误消息说工作后出现问题。只有一行说该作业已运行,然后继续运行下一个cron作业。

命令如下,我删除了敏感部分:

mysqldump -u {{ db_user }} -p{{ db_password }} {{ db_name }} > /home/db_backup.sql | aws s3 cp /home/db_backup.sql s3://{{ s3_url }}/$(date --iso-8601=seconds)_db.sql --profile backupprofile

当普通用户运行此命令时,警告输出不会在命令行中使用mysql密码,但这对于命令在没有交互的情况下工作至关重要。还有第二行或S3说上传工作。这些输出能否影响cronjob?

3 个答案:

答案 0 :(得分:1)

您需要在cronjobs上设置完整路径,我发现您错过了aws以及whereis mysqldump的连接网址。我会whereis awsRob Percivals Android N Developer course on Udemy.com找到运行它所需的完整路径。

答案 1 :(得分:1)

尝试检查环境变量,cron将一组最小的环境变量传递给您的作业。您可以在crontab

中轻松设置PATH
PATH=/usr/local/bin:/usr/sbin

使用sh也有很多cron执行命令,你可能在脚本中使用了另一个shell。你可以通过在crontab的顶部设置shell来告诉cron在bash中运行所有命令:

SHELL=/bin/bash

Cron试图解释%符号,如果你的命令中有一些,你需要逃避它。

答案 2 :(得分:0)

如果在运行命令后首先出现的输出是交互式的,如果这要求你输入回车或类似的东西,这就是问题,否则不应该对此有任何问题。