首先,我:
sudo crontab -e -u adrian
然后我补充说:
* * * * * cd /home/adrian/app/; perl -I /home/adrian/app/lib/ script/db/log_to_db.pl
这应该让脚本每分钟运行一次。此脚本使用新数据修改数据库。 所以我每分钟检查一下我的数据库。没有数据。 “上次更新”时间列也不会更改。我检查日志。此日志出现的每一分钟:
Jul 9 13:32:01 dev1 CROND[28658]: (adrian) CMD (cd /home/adrian/app/; perl -I /home/adrian/app/lib/ script/db/log_to_db.pl)
这看起来像一个成功的日志。但数据库不会更改,因此脚本未运行。此外,如果我手动在命令行上执行该行:
cd /home/adrian/app/; perl -I /home/adrian/app/lib/ script/db/log_to_db.pl
数据库发生变化,脚本运行没有问题!我在这里做错了什么?
答案 0 :(得分:2)
由于命令从命令行运行正常,问题很可能是一些缺少的环境变量。而不是直接从cron作业运行perl,运行一个设置环境然后运行perl的包装脚本。这样的事情应该有效(假设您根据需要使用bash-adjust登录):
#!/bin/bash
source /home/adrian/.bash_profile
cd /home/adrian/app/
perl -I /home/adrian/app/lib/ script/db/log_to_db.pl