【问题标题】:Cron job doesn't run (Perl & Centos)Cron 作业不运行(Perl 和 Centos)
【发布时间】: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)

【问题讨论】:

  • binperl 之间有一个空格
  • @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,结果可预测。

标签: perl cron


【解决方案1】:

将用户名放入系统crontab时需要一个用户名

* * * * * adrian PLACK_ENV=development -I /home/adrian/app/lib/ /home/adrian/app/script/db/log_to_db.pl

但正如@jithin 所说,将其放入您的用户 crontab (crontab -e) 可能更有意义。

【讨论】:

    【解决方案2】:

    不要直接编辑 crontab 文件。而是使用 crontab -e 并添加 cron 条目。

    参考link

    【讨论】:

    • 在某些情况下,可能需要直接写入文件。也许如果一个应用程序正在生成一个 cron 作业。
    猜你喜欢
    • 1970-01-01
    • 2014-04-04
    • 2018-11-18
    • 2013-07-02
    • 1970-01-01
    • 2016-12-18
    • 2012-01-14
    相关资源
    最近更新 更多