Crontab 未启动,无错误

Crontab 未启动,无错误

我有以下 crontab 配置;

45 9 * * * sh /home/renko/mysql.backup.sh > /home/renko/mysql_back_log.log

我的脚本如下;

#!/bin/bash
### Backup Folder dir ###
BAK="/var/www/backup/mysql/"
GZIP="$(which gzip)"
### FTP SERVER Login Stuff###
FTPU="someuser1"
FTPP="somepass1"
FTPS="someftpsite1"
FTPUU="someuser2"
FTPPP="somepass2"
FTPSS="someftpsite2"
NOW=$(date +"%d-%m-%Y")


[ ! -d $BAK ] && mkdir -p $BAK || /bin/rm -f $BAK/*

mysqldump -u root -h localhost --all-databases | gzip -9 > /var/www/backup/renko_backup_$NOW.sql.gz

lftp -u $FTPU,$FTPP -e "mput /var/www/backup/renko_backup_$NOW.sql.gz; quit" $FTPS >  /home/renko/mysql_back_log.log
lftp -u $FTPUU,$FTPPP -e "cd some_dir;mput /var/www/backup/renko_backup_$NOW.sql.gz; quit" $FTPSS >  /home/renko/mysql_back_log.log
mutt -s "database backup" [email protected]  -a /var/www/backup/renko_backup_$NOW.sql.gz >  /home/renko/mysql_back_log.log
mutt -s "Sunucu yedekleme" [email protected] -a /var/www/backup/renko_backup_$NOW.sql.gz >  /home/renko/mysql_back_log.log

如果我使用下面的mysql.backup.sh命令;

sudo sh /home/renko/mysql.backup.sh

脚本运行完美……但是出于某种原因,crontab 无法使该脚本运行。我找不到 crontab 错误的日志。哦,在你问之前,我通过以下方式在 crontab 中添加了该作业;

sudo crontab -e

并通过以下方式重新启动 cron 服务;

sudo service cron restart

我似乎找不到问题所在。我使用的是内核为 2.6.38-8 的 Ubuntu Server。欢迎提供任何建议和指出任何来源。

答案1

需要检查几件事。你不需要sh将 crontab 中的命令传递给 shell。你的特定问题可能可以使用标志来解决,-c例如

45 9 * * * sh -c "/home/renko/mysql.backup.sh > /home/renko/mysql_back_log.log"

这告诉 sh 从命令字符串而不是 stdin 读取命令。

通常你会使用

45 9 * * * /home/renko/mysql.backup.sh > /home/renko/mysql_back_log.log

更新 1:

我认为您的问题部分在于您在 crontab 中重定向了脚本的输出,然后将各种命令的输出重定向到同一个文件。从脚本中删除到日志文件的输出重定向。

更新2:来自评论。

检查您的用户是否有权写入包含日志文件的目录。同时检查您的用户是否至少有权x访问日志文件路径中的目录。

答案2

在检查东西的时候,我们可以去寻找最低公分母吗?放入 crontab

* * * * *  /bin/touch /tmp/nose

如果您可以先执行此操作,以便/bin/touch /tmp/nose ; ls -al /tmp/nose ; rm /tmp/nose我们可以验证/tmp是否存在并且是否可在全球范围内写入(您会感到惊讶),那么我们至少可以说出 cron 是否是问题所在,或者是您的脚本所特有的。

编辑:好的,这是进步。现在,我们可以讨论一下你的剧本的时间安排吗?你能补充一下吗

45 9 * * *  /bin/touch /tmp/toes

添加到您的 crontab 中?这样,我们就可以确认 cron 认为应该在那个时间执行的事情(例如您的脚本)确实应该执行。

相关内容