微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

对cron执行的命令是否有特殊限制?

我有一个crontab ,看起来像

0 0 * * * pg_dump DB_NAME > /path/to/dumps/`date +%Y%m%d`.dmp

当我手动运行它工作正常,但不是当cron运行它。 挖完日志后,我明白了

Dec 12 00:00:01 localhost crond[17638]: (postgres) CMD (pg_dump DB_NAME > /path/to/dumps/`date +)

它看起来像百分号的问题,但man页甚至没有包含百分比字符,所以我认为他们是没问题的。

crontab如何在控制台中打印消息?

dynamic安排提醒电子邮件的最佳方式? 比cron更好的吗?

如何在Nginx内部创buildasynchronous的“cron like”调度程序

Linux脚本不能通过crontab运行shell脚本

Cron:每1秒钟运行一次cron?

如何创build一个cron作业来运行postgres sql函数

Cron和Crontab之间的区别?

Cronjob不运行bash脚本

Ubuntu 10.04 LTS Cron作业无法正常工作

Cronexpression式可以在不同的日子里运行不同的月份

你必须用反斜杠来转义百分号:

0 0 * * * pg_dump DB_NAME > /path/to/dumps/`date +%Y%m%d`.dmp

从man 5 crontab :

“第六”字段(行的其余部分)指定要运行的命令。 行的整个命令部分,直到换行符或%字符,将由/ bin / sh或由crontab文件的SHELL变量中指定的shell来执行。 命令中的百分号(%),除非用反斜线()转义,否则将被改为换行符,并且第一个%之后的所有数据将作为标准输入发送到命令。 没有办法将单个命令行分割成多行,如shell的尾部“”。

与命令行相比,还有另一个可能影响cron运行的程序的特性问题(Robert Gamble描述的“ % ”符号的解释除外)。

这种差异是在环境中。 如果程序运行依赖于特殊的环境变量,那么当你从命令行运行它时,它会运行在你通常使用的环境中,如果你使用它来运行它可能会工作at因为当你创建工作。 但是cron没有特殊的环境设置。

因此,我习惯性地将cron配置为通过绝对路径名来运行脚本,并且该脚本执行我需要的环境设置(例如,将我的$HOME/bin目录添加到PATH中)。 我甚至有一个标准化的基础设施 – 一个设置环境并运行其他程序的shell脚本。

# @(#)$Id: crontab,v 4.2 2007/09/17 02:41:00 jleffler Exp $ # Crontab file for Home Directory for Jonathan Leffler (JL) #----------------------------------------------------------------------------- #Min Hour Day Month Weekday Command #----------------------------------------------------------------------------- 0 * * * * /usr/bin/ksh /work1/jleffler/bin/Cron/hourly 1 1 * * * /usr/bin/ksh /work1/jleffler/bin/Cron/daily 23 1 * * 1-5 /usr/bin/ksh /work1/jleffler/bin/Cron/weekday 2 3 * * 0 /usr/bin/ksh /work1/jleffler/bin/Cron/weekly 21 3 1 * * /usr/bin/ksh /work1/jleffler/bin/Cron/monthly

/work1/jleffler/bin/Cron的脚本设置环境,然后在/work1/jleffler/bin/Cron运行相同名称的脚本来完成实际工作。 Cron子目录中的名称实际上是到同一个脚本的所有链接

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐