我在 crontab 中每 5 分钟安排一次任务。
通过激活 rsyslog 中的 cron 日志来安排任务的计划,并检查它是否按计划执行:
- Right user
- Right command
日志条目示例:
Dec 23 06:40:01 computer /USR/SBIN/CRON[26422]: (myuser) CMD (bash /home/myuser/save.sh &>/home/myuser/cron.log)
我甚至尝试过:
Dec 23 06:40:01 computer /USR/SBIN/CRON[26422]: (myuser) CMD (/home/myuser/save.sh &>/home/myuser/cron.log)
示例 crontab 命令:
*/5 * * * * /home/myuser/save.sh &>/home/myuser/cron.log
该脚本具有正确的权限:它可以被执行myuser
示例脚本:
#!/bin/sh
HOME_DIR="/home/$USER"
LOGFILE=save.log
DIR_NAME="mydir"
VOLATILE="$HOME_DIR/$DIR_NAME/"
PERMANENT="$HOME_DIR/$DIR_NAME""_storage/"
if [ ! -d "$PERMANENT" ]; then
mkdir "$PERMANENT"
fi
echo `date +%x\ %X`>$HOME_DIR/$LOGFILE
# Check if both directories actually exist
if [ -d "$VOLATILE" -a -d "$PERMANENT" ]; then
# Control will enter here if both $VOLATILE and $PERMANENT exist.
rsync -r -t -v "$VOLATILE" "$PERMANENT">$LOGFILE.output
echo OK>>$HOME_DIR/$LOGFILE
else
echo KO>>$HOME_DIR/$LOGFILE
if [ ! -d "$VOLATILE" ]; then
echo "Volatile dir does not exist">>$HOME_DIR/$LOGFILE
fi
if [ ! -d "$PERMANENT" ]; then
echo "Permanent dir does not exist">>$HOME_DIR/$LOGFILE
fi
fi
该命令是一个 bash 脚本,它可以由同一个用户手动正确执行(即使我复制粘贴在 cron 中执行的精确命令),但不会自动执行任何操作。
我将脚本的输出重定向到自定义日志文件中以检查其执行情况,当自动执行发生时该文件仍为空。
我完全迷路了,不知道出了什么问题。
我忘记了什么?
[编辑] 我正在使用 Debian 6 Squeeze
答案1
在您的 crontab 中,作业结束时是否缺少换行符?
“crontab -l”显示什么?
答案2
我遇到了同样的问题,我通过从文件名中删除“.”解决了这个问题。你的情况应该是:
*/5 * * * * /home/myuser/save &>/home/myuser/cron.log