Linux – Cron job ignores part of trigger url

cronlinuxshell

I created a cron job to trigger a url at set times, which in turn starts a product import script. But for some reason part of the trigger url with parameters is stripped away.

I set the cron job like this:

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

But it only runs http://domain.nl/wp-cron.php?import_key=XXXXXXXXXX. Where is the last part that actually tells the script what to do?

Who knows why it behaves like this and how to get it to work?

Best Answer

The ampersand character (&) actually means something in Linux (well, in a Bourne-compatible shell). It means: run the command as a background task.

Because of that, you are actually telling cron to run /usr/bin/wget -O /dev/null http://domain.nl/wp-cron.php?import_key=XXXXXXXXXX in the background, and then to do action=processing. And that's what cron is doing for you - what you told it to do.

To get around this, you need to escape the & character, so that it gets processed as part of the url, rather than being interpreted as a control character.

The easiest solution is to encapsulate the url in quotes.

Related Topic