Automatisera processer med Cron och Crontab i Solaris

Cron-anläggningen ger en kraftfull processplanerare med minutupplösning. Om en process måste springa upprepade gånger utan mänskligt ingripande, kan en post i crontabfilen rymma de flesta scheman. Det finns enkla regler för att modifiera de crontab-poster som måste följas.


För att redigera crontabfilen måste crontabprogrammet användas. De faktiska crontab-filerna bör inte redigeras direkt eftersom innehållet är cachelagrat och ändringar kommer inte att träda i kraft förrän crondab-processen startas om. Genom att använda crontab-programmet för att redigera crontabs uppdateras cacheminnet när filen ändras. För att redigera den aktuella användarens crontab-fil, använd följande:

crontab -e

Alternativet -e berättar om att programmet ska redigera en kopia av användarens crontab-fil. EDITOR-miljövariabeln refereras för att avgöra vilken redigerare som ska använda (standard är ed). För att ställa in denna miljövariabel, se recept för ksh och sh.

Superuser kan redigera en specifik användares crontab genom att lägga till användarnamnet i slutet av det här kommandot. Processerna som körs från en användares crontab kommer att köras som den användaren. Var försiktig med kommandon i rotens crontab eftersom dessa kommer att springa som rot och kan orsaka problem. Om skalskript körs från rotens crontab, se till att deras filbehörigheter inte tillåter ändring av någon annan än root.

Syntaxen av crontab är enkel. Varje rad representerar en enda planerad uppgift. De fem första fälten representerar tidsinformation och allt som följer tolkas som kommandot att schemalägga. Tidsfälten i ordning är följande:

minuter - 0-59
timmar - 0-23
dagar i månaden - 1-31
månader av året - 1-12
veckodagar - 0-6 (söndag-lördag)

En mängd olika alternativ fungerar för varje fält. En asterisk (*) anger alla möjliga händelser för det fältet. Ett tal anger den enda förekomsten. Två siffror åtskilda av a - anger ett värdeområde, och siffror separerade med ett komma anger en lista över händelser.

Här är flera exempel:

15 * * * * logcheck
Kör ett kommando som heter 'logcheck' var 15: e minut varje dag.

0,15,30,45 8-17 * * 1-5 dobackup
Körar dobackup var 15: e minut (dvs 8:00, 8:15, 8:30 och 8:45) under öppettider (från 8:00 till 17:00) under vardagar (måndag-fredag).