Lathund för terminalkommandon i linux/cron

Från Wikibooks
Hoppa till navigering Hoppa till sök

cron och anacron är kommandon för återkommande uppgifter, t.ex. för automatiskt underhåll av systemet. cron är den traditionella varianten, som kör kommandon (vanligen skript) vid angivna tidpunkter. anacron skrevs då personliga datorer blivit vanliga, programmet kör de kommandon som borde ha körts av cron medan datorn var avstängd. Programmen körs automatiskt om de installerats. cron räknas till fundamental infrastruktur i Unix, men anacron behöver kanske installeras explicit.

Typiska jobb som cron utför är att skicka e-post som blivit hängande, ta säkerhetskopior, ladda ner programuppdateringar och uppdatera databaser.

Konfigurationsfiler[redigera]

cron styrs genom konfigurationsfilen /etc/crontab. Vanligen anger denna fil att filerna i /etc/cron.hourly skall köras vid en viss tidpunkt varje timme, de i /etc/cron.daily vid viss tidpunkt varje dag o.s.v. Om man vill att något jobb skall utföras dagligen så räcker det alltså att lägga in ett lämpligt skript i katalogen /etc/cron.daily. Dessa jobb körs som root, om de skall köras med begränsad behörighet är det enklaste sättet att lägga till en rad i /etc/crontab eller en fil med motsvarade rad (och lämplig inledning) i /etc/cron.d

Filerna i /etc/cron.d har samma format som /etc/crontab och används för att programpaket som behöver cron-tjänster inte skall behöva redigera /etc/crontab – det är enklare att lägga till eller ta bort en fil då ett programpaket installeras eller avinstalleras.

/etc/crontab består av rader som börjar med "#" (kommentarer), tomma rader, rader som definierar variabler (PATH=/usr/bin:/bin) och rader med kommandon. De sistnämnda anger minut, timme, dag i månaden, månad, veckodag, användare och kommando. De ointressanta tidsangivelserna anges som "*". För att köra /usr/local/bin/jobb som användare "user" 8.30 varje söndag morgon kan man skriva:

# söndagsjobbet
30 8 * * 7 user /usr/local/bin/jobb

För servrar är det vanligt att cron-jobben körs på småtimmarna, då användningen annars är som minst. För en hemmaanvändare är det kanske viktigare att de inte körs medan man ännu vill sova (om datorn finns i sovrummet och lämnas på över natten). Det är fritt fram att t.ex. ändra timmen (andra fältet) till något annat på raderna för cron.daily etc.

Privata crontab-filer[redigera]

Man kan även ha privata crontab-filer, som man kan ändra i utan root-rättigheter. Dessa installeras med kommandot crontab. De följer samma format utom att användaren inte specificeras. Med crontab -e kan man redigera sin egen crontab-fil. Se till att variabeln EDITOR pekar på en textredigerare du förstår dig på (-u "user" anger att ändringen gäller användaren "user", det behövs i vissa specialsituationer; kommandot env låter en definiera variabler, vilket annars görs på olika sätt beroende på vilket skal man använder):

env EDITOR=gedit crontab -e -u user

Alla användare har inte nödvändigtvis rätt att köra cron-jobb. Om filen /etc/cron.allow finns räknas där upp de användare som får köra cron-jobb. Man kan också begränsa rättigheten genom /etc/cron.deny. Om den förra filen existerar har den senare ingen betydelse.

Program som skall köras vid en viss tidpunkt bara enstaka gånger kan köras med at istället. Notera att varken cron-jobb eller jobb som körs med at har tillgång till skärm eller tangentbord, om man inte enkom ordnat saken. Normalt skall felmeddelanden styras till en explicit angiven loggfil, /dev/null eller syslogd (som skriver i systemloggarna) och eventuell utskrift till lämplig fil.