当前位置: 首页 > 面试题库 >

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

盖向荣
2023-03-14
问题内容

我有一个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页面甚至根本不包含百分号,因此我认为它们还不错。


问题答案:

您必须使用反斜杠转义百分号:

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

来自man 5 crontab

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



 类似资料:
  • lsb_release -a,查看发行代号 cat /etc/issue,查看 Ubuntu 发行版本 sudo ufw disable,禁用防火墙 sudo ufw enable,开启防火墙 apt-get remove iptables,卸载防火墙 `` `` `` `` `` ``

  • 我想通过一个要通过cron执行的shell脚本来执行maven command (mvn)。 我的外壳脚本 output.log始终打印 因此,似乎mvn命令执行失败。 java命令执行的输出已被重定向到java.log但打印为空。但是似乎java命令执行正在进行,因为此处没有打印回退echo语句。 最诚挚的问候, 索拉夫

  • 我已经创建了一个自动化的测试套件使用Selenium网络驱动程序,Maven 但是,当同一个shell脚本使用cron作业运行时,不会执行maven命令。我在shell脚本中看到了一些为maven指定路径的解决方案。这对我也不管用。 #!/宾/巴什 "" cd/home/me/projects/my_test_suite 导出路径=$PATH:/home/me/installs/apache-ma

  • 假设一个docker容器用'docker run'运行,然后用'docker stop'停止。“docker start”之后会执行“cmd”命令吗?

  • 本文向大家介绍PHP 将脚本执行限制为命令行,包括了PHP 将脚本执行限制为命令行的使用技巧和注意事项,需要的朋友参考一下 示例 函数php_sapi_name()和常数PHP_SAPI都返回接口的类型(小号erver API)正在使用由PHP。通过检查函数的输出是否等于,可以将它们用于限制脚本在命令行中的执行cli。 该drupal_is_cli()函数是一个函数示例,该函数检测是否已从命令行执

  • 问题内容: 您好,可以仅将时间限制设置为命令或功能,例如: 我只想将时间限制设置为function1。 有退出set_time_limit,但我认为这将整个脚本的时间限制。有人有想法吗? 问题答案: set_time_limit()确实在全局运行,但是可以在本地重置。 设置允许脚本运行的秒数。如果达到此目的,脚本将返回致命错误。默认限制为30秒,如果存在,则为php.ini中定义的max_exec