[Ubuntu] PHP Cronjob werkt niet

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • DennusB
  • Registratie: Mei 2006
  • Niet online
Hoi Tweakers,

Ik loop nou al een uur te kloten met een PHP Cronjob die ik af wil trappen.
Ik heb als root user crontab -e gedaan en dit er in gezet :

* * * * * /usr/bin/nice -n 19 /usr/bin/php -q /var/www/site/api/cron.php >> /tmp/test.log

Hij trapt hem af (te zien in /var/log/syslog) maar in de /tmp/test.log staat constant :
System error

Als ik het commando handmatig aftrap op de CLI werkt alles prima. Ik heb echt bijna elke Google pagina nu wel gehad maar ik krijg het niet aan de gang. Wat kan dit zijn?

Owner of DBIT Consultancy | DJ BassBrewer


Acties:
  • 0 Henk 'm!

Verwijderd

Sowieso mag je eerst je cronjob zo schrijven dat hij alleen uitgevoerd wordt als een lockfile niet bestaat (hint: flock), maar verder kan het natuurlijk aan vanalles liggen. Misschien wil je ook naar de stderr output kijken.

Acties:
  • 0 Henk 'm!

  • DennusB
  • Registratie: Mei 2006
  • Niet online
Verwijderd schreef op dinsdag 18 februari 2014 @ 21:27:
Sowieso mag je eerst je cronjob zo schrijven dat hij alleen uitgevoerd wordt als een lockfile niet bestaat (hint: flock), maar verder kan het natuurlijk aan vanalles liggen. Misschien wil je ook naar de stderr output kijken.
Daar zal ik naar kijken. Hoe krijg ik die stderr output uit een cron dan?

Owner of DBIT Consultancy | DJ BassBrewer


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 01-10 21:30

Hero of Time

Moderator LNX

There is only one Legend

DennusB schreef op dinsdag 18 februari 2014 @ 21:33:
[...]


Daar zal ik naar kijken. Hoe krijg ik die stderr output uit een cron dan?
Standaard wordt alle uitvoer van de taak naar de gebruiker gemaild. Dit kan uiteraard alleen als je een mailserver hebt, of op z'n minst een MTA.

Wil je stderr in je log erbij hebben, dan moet je 2>&1 gebruiken. Dat redirect stderr naar stdout.
Verwijderd schreef op dinsdag 18 februari 2014 @ 21:27:
Sowieso mag je eerst je cronjob zo schrijven dat hij alleen uitgevoerd wordt als een lockfile niet bestaat (hint: flock), maar verder kan het natuurlijk aan vanalles liggen. Misschien wil je ook naar de stderr output kijken.
Dat is niet vereist (locking), maar wel heel handig om te zorgen dat een taak niet nog een keer wordt afgetrapt in geval een oude nog draait. Dit hoeft niet met flock te gebeuren, maar vergemakkelijkt het wel :).

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • DennusB
  • Registratie: Mei 2006
  • Niet online
Hero of Time schreef op dinsdag 18 februari 2014 @ 21:58:
[...]

Standaard wordt alle uitvoer van de taak naar de gebruiker gemaild. Dit kan uiteraard alleen als je een mailserver hebt, of op z'n minst een MTA.

Wil je stderr in je log erbij hebben, dan moet je 2>&1 gebruiken. Dat redirect stderr naar stdout.
Heb 2>&1 toegevoegd, maar er komt niks bij in de log. Behalve constant die "System Error" :(

Owner of DBIT Consultancy | DJ BassBrewer


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 01-10 21:30

Hero of Time

Moderator LNX

There is only one Legend

Nou, dan moet je 't maar eens anders doen he? Kijk naar je omgevingsvariabelen, daar moet iets van zijn. Wat staat er in je php script? Heb je ook die nice echt nodig? Want als je systeem zo goed als idle is, heeft nice geen enkel nut. Voer je ook alles uit als root, of heb je een unprivileged gebruiker waar 't eigenlijk onder hoort te draaien?

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • sam.vimes
  • Registratie: Januari 2007
  • Laatst online: 08-06 08:44
Probeer het eens met een leeg script, dus /dev/null in plaats van /var/www/site/api/cron.php.
En wat Hero of Time ook al zegt: haal de nice weg. Cron-jobs draaien zowiezo al op een lagere prioriteit.

Acties:
  • 0 Henk 'm!

Verwijderd

sam.vimes schreef op woensdag 19 februari 2014 @ 13:04:
Cron-jobs draaien zowiezo al op een lagere prioriteit.
Bullshit.
Pagina: 1