Hipex cron run commando
Hoe zorg ik ervoor dat cronjobs niet tegelijk draaien of niet stoppen?
In de praktijk zien wij bij Hipex vaak meerdere cronjobs tegelijk draaien die dezelfde taak uitvoeren. Dit wordt vaak veroorzaakt door het feit dat een volgende cronjob eerder wordt gestart als dat de vorige taak klaar is.
Daarnaast kan het voorkomen dat een cronjob niet wordt afgerond en oneindig blijft draaien. Dit kan verschillende oorzaken hebben, vaak is dit gerelateerd aan een indexer / service die niet wordt afgerond.
Om bovenstaande issues te voorkomen, en hiermee de stabiliteit te verbeteren hebben we een Hipex tool ontwikkeld die dit moet voorkomen. In dit artikel leggen we je uit hoe je gebruik kan maken van deze tool.
Hipex cron:run
Om de tool te kunnen gebruiken dien je ingelogd te zijn op de betreffende server. Je kan vervolgens gebruik maken van het volgende hipex commando:
hipex cron:run 'command' 'identifier' --timeout 900
Zoals te zien is, dien je als argumenten command
en identiefier
meegeven:
- Command: Het commando dat je wilt uitvoeren
- Identifier: De identifier van het commando welke je wil uitvoeren, dit mag je zelf bedenken. De identifier wordt gebruikt om een uniek Lock en log bestand te genereren.
Je kan met de --help
optie alle informatie over het commando opvragen:
Usage:
cron:run [options] [--] <commandJob> <identifier>
Arguments:
commandJob The command to be executed
identifier Identifier of the command to be executed
Options:
--debug[=DEBUG] Write command output to stdout and stderr instead of log file. [default: false]
--timeout[=TIMEOUT] Timeout in seconds (s). The maximum time in seconds the command may take. [default: 1800]
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
Help:
Run any job
Zoals te zien is kan je aan het commando ook de volgende opties worden meegegeven:
- debug: Kan worden ingeschakeld zodat de output in je terminal wordt gelogd in plaats van in een log file (standaard staat debug uit).
- timeout: Tijd in seconden dat de taak mag duren (standaard 1800 sec (= 30 min))
In onderstaand voorbeeld gebruiken we het cron run commando om de cron van Magento uit te voeren:
hipex cron:run 'cd /home/hipex/domains/hipex.io/application && php bin/magento cron:run' 'magento-cron' --timeout 900