Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
变量日期在linux cron中不起作用_Linux_Cron - Fatal编程技术网

变量日期在linux cron中不起作用

变量日期在linux cron中不起作用,linux,cron,Linux,Cron,我有一个问题,我无法找到任何信息,而做一个广泛的谷歌搜索 我有一个linux cron,通过crontab运行,在我尝试将变量日期添加到文件标题之前,它工作得非常好。但是当我在cron外部运行同一个命令时,仅从命令行运行,效果很好。。此外,如果我取出日期部分,cron也可以工作 有效的命令行代码: sudo mysqldump -h mysql.url.com -u user -pPassword intravet sites | gzip > /mnt/disk2/database_`

我有一个问题,我无法找到任何信息,而做一个广泛的谷歌搜索

我有一个linux cron,通过crontab运行,在我尝试将变量日期添加到文件标题之前,它工作得非常好。但是当我在cron外部运行同一个命令时,仅从命令行运行,效果很好。。此外,如果我取出日期部分,cron也可以工作

有效的命令行代码:

sudo mysqldump -h mysql.url.com  -u user -pPassword intravet sites | gzip > /mnt/disk2/database_`date '+%m-%d-%Y'`.sql.gz
15 2 * * * root mysqldump -h mysql.url.com -u user -pPassword intravet sites | gzip > /mnt/disk2/database.sql.gz
工作的Cron:

sudo mysqldump -h mysql.url.com  -u user -pPassword intravet sites | gzip > /mnt/disk2/database_`date '+%m-%d-%Y'`.sql.gz
15 2 * * * root mysqldump -h mysql.url.com -u user -pPassword intravet sites | gzip > /mnt/disk2/database.sql.gz
无法工作的Cron:

15 2 * * * root mysqldump -h mysql.url.com -u user -pPassword intravet sites | gzip > /mnt/disk2/database_`date '+%m-%d-%Y'`.sql.gz
我不明白为什么在cron中不能使用date函数? 我发现的一切都表明我可以,但实际上,我不能

服务器详细信息: Ubuntu 12.04.5


感谢您的帮助。

尝试将反勾号替换为
$()
并转义您的
%
,例如:

15 2 * * * root mysqldump -h mysql.url.com -u user -pPassword intravet sites | gzip > /mnt/disk2/database_$(date '+\%m-\%d-\%Y').sql.gz

我只提到删除反勾号,因为在以后的编码工作中,您将遇到各种各样的转义问题。坚持使用
$()
替换命令。

您只需要使用转义
%
符号

* * * * * touch /tmp/foo_`date '+\%m-\%d-\%Y'`.txt
结果:

[root@linux tmp]# ls -l /tmp/foo_*
-rw-r--r-- 1 root root 0 Apr 18 02:17 /tmp/foo_04-18-2015.txt

从手册页:
命令中的“%”字符(除非用反斜杠(\)转义)将变为换行字符,第一个%之后的所有数据将作为标准输入发送到命令。
这两项工作都没有,我做了一些研究,发现默认情况下,不能从cron选项卡访问shell。我仍然没有解决这个问题,但我相信这就是原因。什么是不能从crontab访问shell?cron使用默认的
SHELL=/bin/bash
variableOk。。所以我的shell路径不正确,然后添加反斜杠来逃避修复了我的问题!非常感谢你们。若你们发现答案是“全部帮助”,那个么请点击
答案
来获得答案