【发布时间】:2013-07-05 17:22:33
【问题描述】:
在我的 /etc/crontab 文件中我写:
* * * * * PLACK_ENV=development -I /home/adrian/app/lib/ /home/adrian/app/script/db/log_to_db.pl
让 cron 作业每分钟运行一次。该作业正在运行 log_to_db.pl perl 脚本,该脚本将数据插入到我的数据库中。
当我在终端中运行时 PLACK_ENV=development -I /home/adrian/app/lib/ /home/adrian/app/script/db/log_to_db.pl 没关系!脚本运行。
但是 cron 任务不起作用! 有什么问题?
PD:我的脚本开头是这样的
#!/usr/bin perl
....
我的 cron 日志打印:
Jul 8 20:29:01 dev0001 crond[1829]: (*system*) RELOAD (/etc/crontab)
Jul 8 20:29:01 dev0001 crond[1829]: (CRON) bad username (/etc/crontab)
Jul 8 20:30:01 dev0001 crond[1829]: (*system*) RELOAD (/etc/crontab)
Jul 8 20:30:01 dev0001 crond[1829]: (CRON) bad username (/etc/crontab)
Jul 8 20:30:01 dev0001 CROND[13504]: (root) CMD (/usr/lib64/sa/sa1 -S DISK 1 1)
【问题讨论】:
-
bin和perl之间有一个空格 -
@Bill 不幸的是,这似乎不是问题所在。我将 shebang 更改为 #!/usr/bin/perl 但没有任何反应...
-
您是否真的阅读了您在 cron 日志中收到的错误消息???我猜没有......
-
它说“用户名错误”。由于脚本的性质,我猜想以 root 身份运行它并不好,所以我在 crontab -u adrian -e 中添加了相同的行,并得到一个日志:“Jul ul 8 20:53:01 dev0001 CROND[13933]: (adrian) CMD (PLACK_ENV=development perl -I /home/adrian/app/lib/ /home/adrian/app/script/db/log_to_db.pl )" 但是数据库没有变,连"上次更新时间都没有" " 列,这表明工作没有完成..
-
perl 可执行文件的路径不应该在某个地方,就像在
-I之前一样吗?看起来您正在执行命令-I,结果可预测。