Författare:
Per Stenebo
Skapad:
2012-06-29 22:10:29
Ändrad:
2019-11-10 21:08:11
sv

Cron

Schemalägg exekvering av kommandon och körning av filer med cron.

| Wikipedia (en) | corntabhelp.ubuntu.com |

minute (0-59), hour (0-23, 0 = midnight), day (1-31), month (1-12), weekday (0-6, 0 = Sunday), command

01 04 1 1 * /usr/bin/somedirectory/somecommand

Var filer och kataloger ligger beror till viss del på vilken distribution som används, här är exempel från ubuntu:

/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly

crontab log

| Ask Ubuntu |

On Ubuntu a default installation the cron jobs get logged to

/var/log/syslog

You can see just cron jobs in that logfile by running

grep -i cron /var/log/syslog

 

cron mail

Texten nedan förutsätter att du redan kan skicka mejl från tex kommandoraden, alltså att du har en fungerande MTA (mail transfer agent), i exemplen nedan används sSMTP som MTA.

Avsändare

När cron skickar epost sätts headern From: root (Cron Daemon), det är varken praktiskt eller populärt bland epostprogram/tjänster.

Enda sättet jag har hittat för att lösa problemet är att ersätta strängen "From: root (Cron Daemon)" med den önskade avsändaren, tex "From: cron.minserver@example.se" när mejlet skickas. 

#!/bin/bash
sed -e "s/From: root (Cron Daemon)/From: cron.minserver@example.se/" | /usr/sbin/ssmtp $BASH_ARGV

eller

#!/bin/bash
sed -e "\
s/From: root (Cron Daemon)/From: cron hemma /;\
s/From: Anacron /From: cron hemma /\
" | ssmtp $BASH_ARGV

Lägg koden i ett skript och anpassa till dina förhållanden; ersätt "cron.minserver@example.se" med din avsändare och "/usr/sbin/ssmtp" med sökvägen till din MTA.

Gör skriptet exekverbart: sudo chmod +x /sökväg/till/skript.sh

Kolla din nuvarande sendmail:

ls -l /usr/sbin | grep sendmail

Jag hade:

lrwxrwxrwx 1 root    root           5 jul  1  2012 sendmail -> ssmtp

Radera befitlig symlänk:

sudo rm /usr/sbin/sendmail

Ersätt (symlänken till) sendmail med en symlänk till skriptet:

sudo ln -s /sökväg/till/skript.sh /usr/sbin/sendmail

Detta är testat på Ubuntu 14.04 med MTA msmtp och ssmtp. Skriptet är hämtat från serverfault.com

Fel

Om det inte fungerar att skicka mejl efter ändringen, felsök i loggfilen:

tail /var/log/syslog

Om du har en rad som liknar denna har mejlfunktionen råkat på ett fatalt fel:

Aug 10 18:14:01 server12 CRON[16775]: (root) MAIL (mailed 1 byte of output; but got status 0x007f, #012)

Kontrollera sökvägen till din MTA och uppdatera skriptet: which ssmtp

 

Mottagare

Du kan styra till vem cron skall skicka mejlen till genom att lägga in texten

MAILTO=mej@example.se

i den aktuella cronfilen. Man skulle kunna tro att det skulle räcka att lägga in raden i /etc/crontab, men mina tester visar att inställningen inte ärvs till andra cron-filer, tex /etc/cron.d/rsnapshot.

 

Teckenkodning

Om speciella tecken, tex åäö, inte visas på rätt sätt kan du ändra teckenkodningen på samma sätt som mottagare ovan:

MAILTO=mej@example.se
CONTENT_TYPE="text/plain; charset=utf-8"
CONTENT_TRANSFER_ENCODING=utf-8

 

Kommentarer till sidan cron