【发布时间】:2015-08-31 09:28:25
【问题描述】:
我有这个从外部地址解析图像的脚本。 我需要确保脚本在特定目录中运行。我也想记录时间。
这是我为 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"
我收到邮件给我的用户,但它只是 $(timestamp) 回显。我的 time.log 文件中应该有时间戳,并且 parser1 和 parser2 的输出也应该更新。我不知道为什么这不起作用!我可以从命令行运行 cronjob 命令,它可以工作。
【问题讨论】:
-
您的
*.py文件没有任何调试输出吗?你能在parser*文件的开头插入一些打印吗? -
如果你在你的shell脚本中在
echo $(timestamp)之后插入一个echo $(type python),你会得到什么? -
我的 python 文件确实有调试输出。好吧,我有从命令行运行时出现的调试输出。只是当我从 cronjob 运行它时它没有被放入日志文件中。并且该回显返回“python is /usr/bin/python”
-
好的,现在如果您在 shell 脚本中的 echo $(timestamp) 之后插入一个 echo $(pwd),您会看到什么?
-
如果还在苦苦挣扎,我的建议是比较
code.sh与您的正常环境中看到的整个环境变量集。这可以通过在您的 shell 脚本中插入echo $(env)然后在终端中手动调用env来完成。比较应该会有所帮助。