我有这个脚本从外部地址解析图像。 我需要确保脚本在特定目录中运行。我也想记录时间。
这就是我为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命令,它可以工作。
答案 0 :(得分:1)
所以,我认为问题是cron
正在运行你的脚本,而不是你要运行它的目录。我不确定,但我相信cron
会从/root
或/
目录执行脚本。
试试这个 - 在时间戳功能正下方添加 - 当然是用正确的路径修改的。
DIRNAME=/path/to/directory
LOGFILE=logfile.log
cd ${DIRNAME}
echo $(timestamp) >> ${LOGFILE}
然后删除当前的echo $(timestamp)
行。
此外,请确保日志文件存在,并且您具有该文件的写入权限。