Cron作业忽略触发器url的一部分

我创build了一个cron作业,在设定的时间触发一个url,然后启动一个产品导入脚本。 但由于某些原因,带参数的触发器url的一部分被剥离了。

我设置了这样的cron作业:

/usr/bin/wget -O /dev/null http://domain.nl/wp-cron.php?import_key=XXXXXXXXXX&import_id=3&action=processing 

但它只运行http://domain.nl/wp-cron.php?import_key=XXXXXXXXXX 。 实际上告诉脚本做什么的最后部分在哪里?

谁知道为什么这样做,以及如何使其工作?

&符号字符( & )实际上是指Linux中的某些内容(在Bourne兼容的shell中)。 这意味着:运行该命令作为后台任务 。

正因为如此,你实际上告诉cron在后台运行/usr/bin/wget -O /dev/null http://domain.nl/wp-cron.php?import_key=XXXXXXXXXX ,然后执行action=processing 。 这就是cron为你做的 – 你告诉它做的。

为了解决这个问题,你需要转义&字符,以便它被作为url的一部分处理,而不是被解释为一个控制字符。

最简单的解决scheme是将URL封装在引号中。

除了已经提到的&符号之外,还需要注意cron条目中的%字符。 cron条目中的%将被解释为换行符,并且必须使用反斜杠( \% )进行转义。 确保您审查的import_key没有这样的字符。 此外,url通常在其中有%来逃避某些字符如空间 ), =