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] 举报,一经查实,本站将立刻删除。