从特定目录运行cron并在日志文件中记录日志时间

时间:2015-06-15 18:44:05

标签: bash shell logging cron

我有这个脚本从外部地址解析图像。 我需要确保脚本在特定目录中运行。我也想记录时间。

这就是我为cronjob所做的:

*/2 * * * * cd /path/to/script; (time /path/to/script/code.sh arg) &>> /path/to/log/time.log)

我的shell脚本非常简单:

#!/bin/sh
timestamp()
{
    date +"%Y-%m-%d %T"
}
echo "###########################"
echo $(timestamp)
python /path/to/script/parser1.py "-s$1"
python /path/to/script/parser2.py "-s$1"

我收到邮件给我的用户,但它只是$(时间戳)回显。我应该有时间戳,并且还在我的time.log文件中更新了parser1和parser2的输出。我不知道为什么这不起作用!我可以从命令行运行cronjob命令,它可以工作。

1 个答案:

答案 0 :(得分:1)

所以,我认为问题是cron正在运行你的脚本,而不是你要运行它的目录。我不确定,但我相信cron会从/root/目录执行脚本。

试试这个 - 在时间戳功能正下方添加 - 当然是用正确的路径修改的。

DIRNAME=/path/to/directory
LOGFILE=logfile.log
cd ${DIRNAME}
echo $(timestamp) >> ${LOGFILE}

然后删除当前的echo $(timestamp)行。

此外,请确保日志文件存在,并且您具有该文件的写入权限。