De flesta operativsystem har stöd för någon typ av schemalagda aktiviteter. Cron-jobb är ett enkelt men kraftfullt sätt att schemalägga automatisk körning av kommandon eller skript i Linux eller Unix (BSD, macOS med flera).
Här är ett exempel på ett cron-jobb som lägger till en rad med datum och tid varje timma till en fil:
* 1 * * * /bin/date >> /tmp/datumtid.txt
Schemat för olika jobb finns i en konfigurationsfil kallad “crontab". Ordningen för de olika fälten i crontab ser ut så här:
Tillåtna värden för de olika fälten är:
Minut 0 till 59
Timme 0 till 23
Dag i månad 1-31
Månad 1-12
Veckodag 0-6
Kommando Kommandot du vill köra.
Nedan följer ett lite mer avancerat exempel på ett cron-jobb för en Magento-installation som ska köras varje dag kl. 23.30. Syftet med cron-jobbet är att tömma mappen med sessionsfiler vilka genereras kontinuerligt. Dessa tar upp onödigt diskutrymme och kan leda till att diskutrymmet tar slut. Vi beskriver även vad vi önskar göra med resultatet.
Så här ser vårt cron-jobb ut:
30 23 * * * /usr/bin/find /var/www/magento/var/session/ -type f -name 'sess*' -mtime +14 -delete
Vi vill hitta alla filer som matchar sess*
i mappen /var/www/magento/var/session/
som är över 14 dagar gamla. Vi önskar att cron-jobbet tar bort alla dessa filer och skickar utdata till /dev/null
. Även eventuell utdata från terminalen eller felmeddelanden kommer att kastas genom att skicka dem till /dev/null
.
Om du vill ha bekräftelse via e-post på att cron-jobbet har körts lägger du till följande i crontab:
MAILTO="user@example.com"
*/30 * * * * /usr/bin/php /home/httpd/user/exempel.se/cron.php
Vill du skicka loggen på cron-jobbet till en fil skriver du så här:
*/30 * * * * /usr/bin/php /home/httpd/exempel.se/cron.php > /var/log/crontab_log.log
Önskar du köra cron-jobbet var 30:e minut, stänga av utdatan (både stdout och stderr) och inte önskar att det skickas några mejl om slutfört eller missat jobb:
*/30 * * * * /usr/bin/curl "http://www.exempel.se/cron.php" &> /dev/null
Så här skriver du kommandot för äldre versioner av Bash:
*/30 * * * * /usr/bin/curl "http://www.exempel.se/cron.php" > /dev/null 2>&1
Om du har några frågor eller funderingar om cron-jobb så tveka inte på att kontakta vår support på support@glesys.se.
Kontakta oss gärna för mer information. Vi hjälper dig att komma fram till den bästa lösningen för dina behov.