Терминал Linux #7.1 - crontab: запуск задач по расписанию
Inhoudsopgave:
- Wat is Crontab-bestand
- Crontab-syntaxis en operators
- Crontab-bestanden voor het hele systeem
- Voorgedefinieerde macro's
- Linux Crontab-commando
- Crontab-variabelen
- Crontab Beperkingen
- Cron Jobs Voorbeelden
- Conclusie
Cron is een planningsdaemon die taken uitvoert met gespecificeerde intervallen. Deze taken worden cron-taken genoemd en worden meestal gebruikt om systeemonderhoud of -beheer te automatiseren.
U kunt bijvoorbeeld een cron-taak instellen om repetitieve taken te automatiseren, zoals een back-up van databases of gegevens maken, het systeem bijwerken met de nieuwste beveiligingspatches, het schijfgebruik controleren, e-mails verzenden, enzovoort. Sommige toepassingen, zoals Drupal of Magento, vereisen cron-taken om bepaalde taken uit te voeren.
De cron-taken kunnen worden gepland voor een minuut, uur, dag van de maand, maand, dag van de week of een combinatie hiervan.
Wat is Crontab-bestand
Crontab (cron-tabel) is een tekstbestand dat het schema van cron-taken specificeert. Er zijn twee soorten crontab-bestanden. De systeembrede crontab-bestanden en individuele gebruikers crontab-bestanden.
Crontab-bestanden van gebruikers worden opgeslagen onder de naam van de gebruiker en hun locatie varieert per besturingssysteem. In een op Red Hat gebaseerd systeem zoals CentOS worden crontab-bestanden opgeslagen in de map
/var/spool/cron
terwijl Debian- en Ubuntu-bestanden worden opgeslagen in de map
/var/spool/cron/crontabs
.
Hoewel u de gebruiker crontab-bestanden handmatig kunt bewerken, wordt het aanbevolen om de opdracht
crontab
gebruiken.
/etc/crontab
en de bestanden in de map
/etc/cron.d
zijn systeembrede crontab-bestanden die alleen door de systeembeheerders kunnen worden bewerkt.
In de meeste Linux-distributies kun je ook scripts in de
/etc/cron.{hourly, daily, weekly, monthly}
mappen plaatsen en de scripts worden elk
hour/day/week/month
.
Crontab-syntaxis en operators
Elke regel in het crontab-bestand van de gebruiker bevat zes velden gescheiden door een spatie gevolgd door de opdracht die moet worden uitgevoerd.
* * * * * 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 eerste vijf velden kunnen een of meer waarden bevatten, gescheiden door een komma of een reeks waarden gescheiden door een koppelteken.
-
*-De asterisk-operator betekent elke waarde of altijd. Als u het asterisk-symbool in het veld Uur hebt, betekent dit dat de taak elk uur wordt uitgevoerd.,- Met de komma-operator kunt u een lijst met waarden voor herhaling opgeven. Als u bijvoorbeeld1, 3, 5in het veld Uur hebt, wordt de taak om 1 uur, 3 uur en 5 uur uitgevoerd.-operator voor koppeltekens kunt u een reeks waarden opgeven. Als u1-5in het veld Dag van de week, wordt de taak elke weekdag uitgevoerd (van maandag tot vrijdag)./-De slash-operator stelt u in staat om waarden op te geven die over een bepaald interval tussen hen worden herhaald. Als u bijvoorbeeld*/4in het veld Hour heeft, betekent dit dat de actie om de vier uur wordt uitgevoerd. Het is hetzelfde als het opgeven van0, 4, 8, 12, 16, 20. In plaats van een sterretje vóór de slash-operator, kunt u ook een reeks waarden gebruiken,1-30/10betekent hetzelfde als1, 11, 21.
Crontab-bestanden voor het hele systeem
De syntaxis van crontab-bestanden voor het hele systeem is iets anders dan crontabs voor gebruikers. Het bevat een extra verplicht gebruikersveld dat aangeeft welke gebruiker de cron-taak uitvoert.
Er zijn verschillende speciale Cron-schemamacro's gebruikt om algemene intervallen op te geven. U kunt deze snelkoppelingen gebruiken in plaats van de datumspecificatie met vijf kolommen. Met de opdracht crontab kunt u een crontab-bestand installeren of openen voor bewerking. U kunt de opdracht crontab gebruiken om cron-taken te bekijken, toe te voegen, te verwijderen of te wijzigen met behulp van de volgende opties: Met de opdracht crontab wordt het crontab-bestand geopend met de editor die is opgegeven door de omgevingsvariabelen
De cron-daemon stelt automatisch verschillende omgevingsvariabelen in. Systeembeheerders kunnen bepalen welke gebruikers toegang hebben tot de opdracht
Standaard bestaat alleen het bestand /etc/cron.deny en is dit leeg, wat betekent dat alle gebruikers de opdracht crontab kunnen gebruiken. Als u de toegang tot de crontab-opdrachten voor een specifieke gebruiker wilt weigeren, voegt u de gebruikersnaam toe aan dit bestand. Als het bestand
Als geen van beide bestanden bestaat, kunnen alleen gebruikers met beheerdersrechten de opdracht
Hieronder staan enkele voorbeelden van cron-taken die u laten zien hoe u een taak kunt plannen om op verschillende perioden te worden uitgevoerd. Voer elke dag van maandag tot en met vrijdag om 15:00 uur een opdracht uit: Voer elke 5 minuten een script uit en stuurde de standaarduitvoer om naar
Voer elke maandag om 15.00 uur twee opdrachten uit (gebruik de operator
Voer elke 2 minuten een PHP-script uit en schrijf de uitvoer naar een bestand: Voer elke dag, elk uur, op het uur, van 08.00 tot 16.00 uur een script uit: Voer een script uit op de eerste maandag van elke maand om 07.00 uur Voer het a-script uit om 21.15 uur, op de 1e en 15e van elke maand: Stel aangepaste variabelen
U hebt geleerd hoe u cron-taken kunt maken en taken kunt plannen op een specifieke datum en tijd. Als je nog vragen hebt, kun je een reactie achterlaten.
* * * * * command(s)
* * * * * command(s)
Voorgedefinieerde macro's
@yearly
(of
@annually
) - Voer de opgegeven taak eenmaal per jaar uit om middernacht (12.00 uur) op 1 januari. Gelijk aan
0 0 1 1 *
.
@monthly
- Voer de opgegeven taak eenmaal per maand om middernacht op de eerste dag van de maand uit. Gelijk aan
0 0 1 * *
.
@weekly
- Voer de opgegeven taak eenmaal per week om middernacht op zondag uit. Gelijk aan
0 0 * * 0
.
@daily
- Voer de opgegeven taak eenmaal per dag om middernacht uit. Gelijk aan
0 0 * * *
.
@hourly
- Voer de opgegeven taak eenmaal per uur uit aan het begin van het uur. Gelijk aan
0 * * * *
.
@reboot
- Voer de opgegeven taak uit bij het opstarten van het systeem (opstarttijd).Linux Crontab-commando
crontab -e
- Bewerk het crontab-bestand of maak er een als het nog niet bestaat.
crontab -l
- Geef de inhoud van het crontab-bestand weer.
crontab -r
- Verwijder uw huidige crontab-bestand.
crontab -i
- Verwijder uw huidige crontab-bestand met een prompt voordat u het verwijdert.
crontab -u
VISUAL
of
EDITOR
.
Crontab-variabelen
PATH=/usr/bin:/bin
. Als de opdracht die u aanroept aanwezig is in het door cron opgegeven pad, kunt u het absolute pad naar de opdracht gebruiken of de variabele cron
$PATH
. Je kunt niet impliciet toevoegen
:$PATH
zoals je zou doen met een regulier script. De standaardshell is ingesteld op
/bin/sh
. U kunt een andere shell instellen door de variabele
SHELL
wijzigen.
SHELL
roept de opdracht op vanuit de thuismap van de gebruiker. De variabele
HOME
kan worden overschreven door instellingen in de crontab. De e-mailmelding wordt naar de eigenaar van de crontab verzonden. Om het standaardgedrag te overschrijven, kunt u de
MAILTO
omgevingsvariabele gebruiken met een lijst (gescheiden door komma's) van alle e-mailadressen die u de e-mailmeldingen wilt ontvangen. Als
MAILTO
is gedefinieerd maar leeg is (
MAILTO=""
), wordt er geen e-mail verzonden.Crontab Beperkingen
crontab
door de bestanden
/etc/cron.deny
en
/etc/cron.allow
gebruiken. De bestanden bestaan uit een lijst met gebruikersnamen, één gebruikersnaam per regel.
/etc/cron.allow
bestaat, kunnen alleen de gebruikers die in dit bestand worden vermeld de opdracht
crontab
gebruiken.
crontab
gebruiken.Cron Jobs Voorbeelden
0 15 * * 1-5 command
dev null
, alleen de standaardfout wordt naar het opgegeven e-mailadres verzonden:
[email protected] */5 * * * * /path/to/script.sh > /dev/null
&&
tussen de opdrachten door):
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
en
MAILTO
en voer elke minuut een opdracht uit.
HOME=/opt PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin SHELL=/usr/bin/zsh [email protected] */1 * * * * command
Conclusie
Giga-byte-plannen Mini-laptops Met 10-inch schermen heeft tv
Giga-byte grote plannen voor toekomstige netbooks , inclusief 10-inch schermen en DVB-T televisieontvangst.
Qimonda, Nanya Afronding van plannen tot beëindiging van joint venture met DRAM
Qimonda en Nanya zijn bijna bezig met het finaliseren van plannen om hun DRAM-joint venture in Taiwan te beëindigen.
Panasonic daagt Nikon uit met HD-video op fotocamera Panasonic is bezig met de ontwikkeling van een versie van de Lumix G1 digitale fotocamera met de mogelijkheid om op te nemen high-definition video met ...
Panasonic ontwikkelt een versie van zijn Lumix G1 digitale fotocamera met de mogelijkheid om high-definition video op te nemen met autofocus.







