我有以下的crontabconfiguration;
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不会使这个脚本工作。 我无法findcrontab错误的日志。 哦,在你问我之前,我通过crontab添加了这个工作;
sudo crontab -e
并通过重新启动cron服务;
sudo service cron restart
我似乎无法find问题。 我正在使用内核2.6.38-8的Ubuntu服务器。 任何build议和指向任何来源将受到欢迎。
有几件事要检查。 你不需要sh因为crontab中的命令无论如何都被传递给shell。 您的特定问题可能可以使用-c标志修复,例如
45 9 * * * sh -c "/home/renko/mysql.backup.sh > /home/renko/mysql_back_log.log"
这告诉sh从命令string而不是标准input读取命令。
通常你会使用
45 9 * * * /home/renko/mysql.backup.sh > /home/renko/mysql_back_log.log
更新1:
我认为你的问题的一部分是,你正在redirect你的crontab脚本的输出,然后你redirect各种命令的输出到同一个文件。 从脚本中删除输出redirect到日志文件。
更新2:从评论。
检查您的用户是否有权写入包含日志文件的目录。 另外请检查您的用户对日志文件path中的目录有至lessx权限。
当我们检查的东西,我们可以去最低的共同点? 放在crontab中
* * * * * /bin/touch /tmp/nose
如果你可以先做一个/bin/touch /tmp/nose ; ls -al /tmp/nose ; rm /tmp/nose /bin/touch /tmp/nose ; ls -al /tmp/nose ; rm /tmp/nose /bin/touch /tmp/nose ; ls -al /tmp/nose ; rm /tmp/nose所以我们可以validation/tmp是否存在并且是世界可写的(你会感到惊讶),那么我们至less可以说cron是否是问题,或者是脚本特有的东西。
编辑 :好的,这是进步。 现在,我们可以解决您的脚本的时间? 你能补充吗?
45 9 * * * /bin/touch /tmp/toes
到你的crontab? 那样的话,我们可以证实克伦认为那个时候应该熄灭的东西,比如你的剧本,真的应该是走了。