Cron 作业忽略部分触发 URL

Cron 作业忽略部分触发 URL

我创建了一个 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。实际上告诉脚本要做什么的最后一部分在哪里?

谁知道它为什么会这样表现以及如何让它发挥作用?

答案1

“与”字符 ( &) 在 Linux 中实际上有某种含义(在兼容 Bourne 的 shell 中)。它的意思是:将命令作为后台任务运行

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

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

最简单的解决方案是将 url 括在引号中。

答案2

除了已经提到的 & 符号之外,您还必须小心%cron 条目中的字符。%cron 条目中的 将被解释为换行符,必须用反斜杠 ( \%) 进行转义。确保import_key您审查的 不包含这样的字符。此外,URL 中通常包含%某些字符,例如空格 ( )、=等。

相关内容