Android

Schemalägga cron-jobb med crontab

Linux - Cron Jobs for Scheduled Tasks (crontab)

Linux - Cron Jobs for Scheduled Tasks (crontab)

Innehållsförteckning:

Anonim

Cron är en schemaläggningsdemon som utför uppgifter med angivna intervall. Dessa uppgifter kallas cron-jobb och används mest för att automatisera systemunderhåll eller administration.

Du kan till exempel ställa in ett cron-jobb för att automatisera repetitiva uppgifter som säkerhetskopiering av databaser eller data, uppdatering av systemet med de senaste säkerhetsuppdateringarna, kontroll av hårddiskanvändning, skicka e-post och så vidare. Vissa applikationer, som Drupal eller Magento, kräver cron-jobb för att utföra vissa uppgifter.

Cron-jobb kan planeras köras av en minut, timme, dag i månaden, månad, veckodag eller någon kombination av dessa.

Vad är Crontab-fil

Crontab (cron-tabell) är en textfil som anger schemat för cron-jobb. Det finns två typer av crontab-filer. Systemövergripande crontab-filer och individuella användare av crontab-filer.

Användares crontab-filer lagras med användarens namn, och deras plats varierar beroende på operativsystem. I Red Hat-baserade system som CentOS, lagras crontab-filer i /var/spool/cron katalogen medan Debian och Ubuntu-filer lagras i /var/spool/cron/crontabs katalogen.

Även om du kan redigera användarens crontab-filer manuellt, rekommenderas det att använda crontab kommandot.

/etc/crontab och filerna i /etc/cron.d är systemomfattande crontab-filer som bara kan redigeras av systemadministratörerna.

I de flesta Linux-distributioner kan du också lägga till skript i /etc/cron.{hourly, daily, weekly, monthly} och skripten kommer att köras varje hour/day/week/month .

Crontab Syntax och operatörer

Varje rad i användarens crontab-fil innehåller sex fält separerade med ett utrymme följt av kommandot som ska köras.

* * * * * command(s) - - - - - | | | | | | | | | ----- Day of week (0 - 7) (Sunday=0 or 7) | | | ------- Month (1 - 12) | | --------- Day of month (1 - 31) | ----------- Hour (0 - 23) ------------- Minute (0 - 59)

De första fem fälten kan innehålla ett eller flera värden, åtskilda med komma eller ett intervall med värden separerade med bindestreck.

  • * -Asteriskoperatören betyder valfritt värde eller alltid. Om du har asterisk-symbolen i fältet Hour, betyder det att uppgiften utförs varje timme. , -Kommasoperatören låter dig ange en lista över värden för upprepning. Om du till exempel har 1, 3, 5 i fältet Hour körs uppgiften klockan 01.00, 03.00 och 05.00. - bindestreckoperatören kan du ange ett intervall värden. Om du har 1-5 i fältet Dag i veckan körs uppgiften varje veckodag (från måndag till fredag). / -Snitsoperatören låter dig ange värden som ska upprepas under ett visst intervall mellan dem. Om du till exempel har */4 i fältet Hour, betyder det att åtgärden kommer att utföras var fjärde timme. Det är samma sak som att specificera 0, 4, 8, 12, 16, 20 . I stället för asterisk före snedstreckoperatören kan du också använda ett intervall värden, 1-30/10 betyder detsamma som 1, 11, 21 .

Systemomfattande Crontab-filer

Syntaxen för systemomfattande crontab-filer är något annorlunda än användarens crontabs. Det innehåller ett ytterligare obligatoriskt användarfält som anger vilken användare som ska köra cron-jobbet.

* * * * * command(s) * * * * * command(s)

Fördefinierade makroer

Det finns flera speciella Cron-schema-makron som används för att specificera vanliga intervall. Du kan använda genvägarna i stället för datumspecifikationen med fem kolumner.

  • @yearly (eller @annually ) - Kör den angivna uppgiften en gång om året vid midnatt (12:00) den 1 januari. Motsvarande med 0 0 1 1 * . @monthly - Kör den angivna uppgiften en gång i månaden vid midnatt den första dagen i månaden. Motsvarande med 0 0 1 * * . @weekly - Kör den angivna uppgiften en gång i veckan vid midnatt på söndagen. Motsvarande med 0 0 * * 0 . @daily - Kör den angivna uppgiften en gång om dagen vid midnatt. Motsvarande med 0 0 * * * . @hourly - Kör den angivna uppgiften en gång i timmen i början av timmen. Motsvarande med 0 * * * * . @reboot - Kör den angivna uppgiften vid systemstart (starttid).

Linux Crontab-kommando

Med crontab-kommandot kan du installera eller öppna en crontab-fil för redigering.

Du kan använda crontab-kommandot för att visa, lägga till, ta bort eller ändra cron-jobb med följande alternativ:

  • crontab -e - Redigera crontab-fil, eller skapa en om den inte redan finns. crontab -l - Visa innehållet i crontab-filen. crontab -r - Ta bort din nuvarande crontab-fil. crontab -i - Ta bort din nuvarande crontab-fil med en prompt innan den tas bort. crontab -u - Redigera crontab-fil för annan användning. Kräver systemadministratörsbehörighet.

Kommandot crontab öppnar crontab-filen med redigeraren som anges av VISUAL eller EDITOR .

Crontab-variabler

Cron-demonet ställer automatiskt in flera miljövariabler.

  • Standardvägen är inställd på PATH=/usr/bin:/bin . Om kommandot du ringer finns i den cron-angivna sökvägen kan du antingen använda den absoluta sökvägen till kommandot eller ändra cron $PATH variabeln. Du kan inte implicit bifoga :$PATH som du gör med ett vanligt skript. Standardskalet är inställt på /bin/sh . Du kan ställa in ett annat skal genom att ändra SHELL variabeln. SHELL åberopar kommandot från användarens hemkatalog. HOME variabeln kan åsidosättas av inställningar i crontab. E-postmeddelandet skickas till ägaren av crontab. För att skriva över standardbeteendet kan du använda MAILTO miljövariabeln med en lista (kommaseparerad) över alla e-postadresser som du vill få e-postmeddelandena. Om MAILTO är definierat men tomt ( MAILTO="" ) skickas ingen e-post.

Crontab-begränsningar

Systemadministratörer kan kontrollera vilka användare som har åtkomst till kommandot crontab med hjälp av /etc/cron.deny och /etc/cron.allow . Filerna består av en lista med användarnamn, ett användarnamn per rad.

Som standard finns bara filen /etc/cron.deny och är tom, vilket innebär att alla användare kan använda kommandot crontab. Om du vill neka åtkomst till crontab-kommandona till en specifik användare lägger du till användarnamnet till den här filen.

Om filen /etc/cron.allow existerar kan endast de användare som listas i den här filen använda kommandot crontab .

Om ingen fil finns, kan endast användare med administrativa behörigheter använda crontab kommandot.

Exempel på Cron Jobb

Nedan följer några exempel på cron-jobb som visar hur du planerar en uppgift att köra under olika tidsperioder.

  • Kör ett kommando kl 15:00 varje dag från måndag till fredag:

    0 15 * * 1-5 command

    Kör ett skript var 5 minut och omdirigerade standardutgången till dev null , bara standardfelet skickas till den angivna e-postadressen:

    [email protected] */5 * * * * /path/to/script.sh > /dev/null

    Kör två kommandon varje måndag kl 15 (använd operatören && mellan kommandona):

    0 15 * * Mon command1 && command2

    Kör ett PHP-skript varannan minut och skriv utdata till en fil:

    */2 * * * * /usr/bin/php /path/to/script.php >> /var/log/script.log

    Kör ett skript varje dag, varje timme, på timmen, från 08:00 till 16:00:

    00 08-16 * * * /path/to/script.sh

    Kör ett manus den första måndag i varje månad, klockan 7

    0 7 1-7 * 1 /path/to/script.sh

    Kör ett manus kl. 21:15, den 1 och 15 i varje månad:

    15 9 1, 15 * * /path/to/script.sh

    Ställ in anpassade HOME , PATH , SHELL och MAILTO variabler och kör ett kommando varje minut.

    HOME=/opt PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin SHELL=/usr/bin/zsh [email protected] */1 * * * * command

Slutsats

Du har lärt dig att skapa cron-jobb och schemalägga uppgifter vid ett specifikt datum och tid.

Lämna gärna en kommentar om du har några frågor.

cron crontab terminal