Linux - Cron Jobs for Scheduled Tasks (crontab)
Innehållsförteckning:
- Vad är Crontab-fil
- Crontab Syntax och operatörer
- Systemomfattande Crontab-filer
- Fördefinierade makroer
- Linux Crontab-kommando
- Crontab-variabler
- Crontab-begränsningar
- Exempel på Cron Jobb
- Slutsats
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 har1, 3, 5i 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 har1-5i 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*/4i fältet Hour, betyder det att åtgärden kommer att utföras var fjärde timme. Det är samma sak som att specificera0, 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/10betyder detsamma som1, 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.
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. 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: Kommandot crontab öppnar crontab-filen med redigeraren som anges av
Cron-demonet ställer automatiskt in flera miljövariabler. Systemadministratörer kan kontrollera vilka användare som har åtkomst till kommandot
Som standard finns bara filen
Om filen
Om ingen fil finns, kan endast användare med administrativa behörigheter använda
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: Kör ett skript var 5 minut och omdirigerade standardutgången till
Kör två kommandon varje måndag kl 15 (använd operatören
Kör ett PHP-skript varannan minut och skriv utdata till en fil: Kör ett skript varje dag, varje timme, på timmen, från 08:00 till 16:00: Kör ett manus den första måndag i varje månad, klockan 7 Kör ett manus kl. 21:15, den 1 och 15 i varje månad: Ställ in anpassade
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.
* * * * * command(s)
* * * * * command(s)
Fördefinierade makroer
@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
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
VISUAL
eller
EDITOR
.
Crontab-variabler
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
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.
/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.
/etc/cron.allow
existerar kan endast de användare som listas i den här filen använda kommandot
crontab
.
crontab
kommandot.Exempel på Cron Jobb
0 15 * * 1-5 command
dev null
, bara standardfelet skickas till den angivna e-postadressen:
[email protected] */5 * * * * /path/to/script.sh > /dev/null
&&
mellan kommandona):
0 15 * * Mon command1 && command2
*/2 * * * * /usr/bin/php /path/to/script.php >> /var/log/script.log
00 08-16 * * * /path/to/script.sh
0 7 1-7 * 1 /path/to/script.sh
15 9 1, 15 * * /path/to/script.sh
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
Gratis verktyg för att schemalägga avstängning, starta om i Windows vid fasta tider
Letar du efter Windows Auto Shutdown-verktyg? Stäng av, starta om, logga av, vila eller sova Windows-datorn vid vissa fasta tider med den här fria programvaran
Använd Microsoft FindTime för att schemalägga möten snabbare på Outlook
FindTime är ett tillägg för Microsoft Outlook som schemalägger snabbare. Arrangören kräver Office 365-e-postkonto och fungerar på Outlook 2016 och OWA.
Använd windows task scheduler för att schemalägga diskrensning
Använd Windows Task Scheduler för att schemalägga diskrensning i Windows 7 och Windows Vista.







