Crontab i Linux – med eksempler og værktøjer i realtid

Lad os udforske crontab, dets kommandoer og forskellige operationer forbundet med Crontab.

Vi vil lære, hvordan man planlægger opgaver ved hjælp af cron-værktøjet, og til sidst vil vi også diskutere nogle af de online-værktøjer, som hjælper os med at formatere og teste cron-kommandoerne.

Indholdsfortegnelse

Oprindelse

Crontab står for “cron table”. Ordet cron er taget fra det græske ord Chronos, der betyder tid. Crontab er en system-dæmon-proces, der automatisk udfører nogle opgaver og job i henhold til det planlagte tidspunkt.

  Sådan opsætter du en transmissions-bittorrent-server på Linux

Brug cases

Crontab er nyttig til at udføre forskellige operationer såsom håndtering af automatiseret backup, roterende logfiler, synkronisering af filer mellem fjernmaskiner og rydning af midlertidige mapper osv. Crontab kan bruges til enhver form for arbejde, men det bliver især nyttigt, når vi begynder at beskæftige os med systemadministration type arbejde.

Ved hjælp af cron kan en administrator planlægge et job til at køre på et bestemt tidspunkt og dag.

Så lad os se, hvordan vi kan sætte dette op.

Crontab-syntaks

For at udføre en liste over kommandoer læser cron-værktøjet konfigurationsfilerne. For at fortolke linjerne i crontab-konfigurationstabellerne følger den en Crontab-syntaks. Crontab har seks felter, og de første fem (1-5) felter definerer datoen og tidspunktet for udførelse. Det sidste felt, dvs. 6. felt, kunne være et brugernavn og/eller opgave /job/kommando/script, der skal udføres.

* * * * * USER_NAME KOMMANDO/SCRIPT-AT-UDFØRE

│ │ │ │ │
│ │ │ │ │
│ │ │ │ |____________ Ugedag (0 – 6) (0 er søndag, eller brug navne)
│ │ │ |____________ Måned (1 – 12),* betyder hver måned
│ │ |______________ Dag i måneden (1 – 31),* betyder hver dag
│ |________________ Time (0 – 23),* betyder hver time
|__________________ Minut (0 – 59), * betyder hvert minut

Bemærkninger:

  • Stjerne
  • bruges til at matche alle mulige værdier for et felt. For eksempel ville en stjerne brugt i timefeltet svare til hver time, eller en stjerne i månedsfeltet ville svare til hver måned.

brugernavn er valgfrit (kun tilgængeligt, hvis det er systemets crontab-fil)

Eksempler:

Lad os forstå ovenstående syntaks med nogle eksempler

0 5 * * * /scripts/job.sh

1. Planlæg en cron, der skal udføres kl. 05.00 dagligt

0 6,18 * * * /scripts/job.sh

2. Planlæg en cron, der skal udføres to gange om dagen kl. 06.00 og kl. 18.00

* * * * * /scripts/job.sh

3. Planlæg en cron til at udføre hvert minut

0 19 * * mon /scripts/job.sh

4. Planlæg en cron, der skal udføres hver mandag kl. 19.00.

*/10 * * * * /scripts/job.sh

5. Planlæg en cron til at udføre hvert 15. minut.

* * * feb,jun,oct * /script/job.sh

6. Planlæg en cron til at udføre på udvalgte måneder

25 7 4 3 * /home/script/backup.sh

7. Kør shell-scriptet /home/script/backup.sh den 4. marts kl. 7:25

8. Planlæg en cron til at udføre hvert 30. sekund

  • Da vi ikke har kontrol over sekunder i Crontab, men vi kan opnå det gennem nedenstående to-trins proces.
* * * * * /home/scripts/script.sh
  • Lad os først planlægge en opgave, der kører hvert minut.
* * * * * sleep 30; /home/scripts/script.sh

Lad os nu bruge sleep-kommandoen til at pause udførelsen i 30 sekunder.

Ovenstående opgave stopper udførelsen i 30 sekunder, og den genoptages igen.

Type Cron-konfigurationsfiler

Der er to typer Cron-konfigurationsfiler:

UNIX/Linux-systemet Crontab

Dette kræver root-privilegium, fordi det normalt bruges til systemtjenester og kritiske job. Det sjette felt (i ovenstående syntaksbeskrivelse) er navnet på en bruger, som kommandoen skal køre som. Det giver systemets crontab mulighed for at køre kommandoer som enhver bruger.

  De 5 bedste IRC-klienter til brug på Linux

Bruger Crontab

En bruger kan også installere deres egne cron-job ved hjælp af crontab-kommandoen. Også her er det sjette felt (i ovenstående syntaksbeskrivelse) kommandoen, der skal køres, og alle kommandoer kører som den bruger, der oprettede crontab. Hver bruger kan have deres egen crontab-fil, og selvom disse er filer i /var/spool/cron/crontabs, er de ikke beregnet til at blive redigeret direkte. Vi skal bruge crontab-kommandoen til at redigere eller opsætte vores egne cron-job.

Hvordan virker det? Cron-tjenesten (dæmon) kører i baggrunden og kontrollerer konstant (hvert minut) /etc/crontab-filen og /etc/cron.*/-mapperne. Det tjekker også mappen /var/spool/cron/. Kommandoer udføres af cron

når felterne minut, time og måned matcher det aktuelle klokkeslæt, og mindst et af to-dages felterne (dag i måneden eller ugedag) matcher den aktuelle dag.

Grundlæggende kommandoer

Liste over eksisterende Cron-job

crontab -l

Vi kan liste alle Cron-job uden at åbne crontab-konfigurationsfilen ved at bruge kommandoen nedenfor

[[email protected] ~]# crontab -l
no crontab for toadmin.dk
[[email protected] ~]#

Hvis der ikke er noget eksisterende job, vil det returnere output som

[[email protected] ~]# crontab -l
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
0 */1 * * * /home/account/scripts/updateAccountStatuses.sh
0 */1 * * * /home/account/scripts/reActivateAccountStatus.sh
[[email protected] ~]#

Hvis brugeren allerede har tilføjet nogle af opgaverne, vises den som følger.

Cron-tabellen er brugerspecifik, hvilket betyder, at du skal være logget ind med en specifik bruger for at se cron-tabellisten.

Liste Cron for en bestemt bruger

For at angive planlagte job fra en anden bruger, brug option som -u (Bruger) og -l (Liste).

crontab -u et andet_brugernavn -l

Eksempel: crontab -u toadmin.dk -l

Tilføj/Rediger Crontab-indgange

For at redigere crontab-indgangen kan vi bruge -e-indstillingen som vist nedenfor.

crontab -e

Ovenstående kommando åbner vi-editorer, hvor du angiver detaljerne for jobbet og gemmer filen. Når den er gemt, kan du kontrollere, om cron er konfigureret eller ej med crontab -l.

Tilføj/Rediger Crontab-indgange for en bestemt bruger

crontab -u another_username -e

Vi kan redigere crontab for en anden bruger ved at bruge nedenstående kommando

  Sådan installeres Terminus på Linux

Eksempel: crontab -u toadmin.dk -e

Fjern Crontab Entry

Brug parameteren -r med Crontab for at fjerne komplette planlagte job uden bekræftelse fra crontab

crontab -r

crontab -i -r
[[email protected] ~]# crontab -i -r
crontab: really delete toadmin.dk's crontab?

Hvis du ønsker bekræftelse før sletning af planlagte job, skal du bruge -i-indstillingen med -r, som vil bede brugeren om bekræftelse, før du sletter brugerens crontab.

Crontab specialstreng

Udover ovenstående syntaks, vi diskuterede, kan vi også bruge otte specielle strenge leveret af Crontab. Det vil ikke kun spare vores tid, men det vil også forbedre læsbarheden.
Speciel streng
Beskrivelse
@genstart
Kør én gang efter opstart.
@årligt
Løb en gang om året, dvs. 0 0 1 1 *
@årligt
Samme som @årligt
@månedlige
Løb en gang om måneden, dvs. 0 0 1 * *
@ugentlig
Løb en gang om ugen, dvs. 0 0 * * 0
@daglige
Løb en gang om dagen, dvs. 0 0 * * *
@midnat
Samme som @dagligt
@hver time

Løb en gang i timen, dvs. 0 * * * *

Crontab særlige strenge eksempler

1. Crontab for at planlægge opgaver på årsbasis

@årligt /scripts/greeting.sh

Vi kan udføre over én for at sende en nytårshilsen, den udføres i det første minut af hvert år.

2. Crontab for at planlægge opgaver, der skal udføres på månedsbasis.

@monthly /scripts/cleanup.sh

Vi kan udføre ovenstående for at udføre nogle oprydningsaktiviteter i begyndelsen af ​​hver måned.

På samme måde kan vi bruge andre Crontab-specialstrenge til ugentlige, daglige og timelige formål.

Cron Directory

  • Systemadministratoren kan bruge en systemdækkende cron-tidsplan, som kommer under det foruddefinerede cron-bibliotek som vist nedenfor
  • /etc/cron.d
  • /etc/cron.daily
  • /etc/cron.hourly
  • /etc/cron.monthly

/etc/cron.weekly

Crontab realtidseksempler

Lad os diskutere nogle af de realtidseksempler, som en systemadministrator eller it-professionelle normalt bruger.

Slet tomme filer og mappe

45 0 * * * toadmin.dk find /tmp -type f -tom -slet

Ovenfor cron-udtryk finder de tomme filer og mappe fra /tmp-mappen, og den vil slette dem. Dette job vil køre kl. 12.45 på daglig basis. Vi skal nævne brugernavnet for at udføre dette job. I ovenstående eksempel udfører toadmin.dk-brugeren cron-job-operation.

Udfør flere opgaver ved hjælp af en enkelt cron

* * * * * /home/scripts/backup.sh; /home/scripts/scritp.sh

Flere opgaver/job kan adskilles ved hjælp af et semikolon(;) og kan tildeles til et enkelt cron-udtryk.

Cron formaterings- og testværktøjer

Indtil videre har vi diskuteret kommandoer og syntaks for crontab for at planlægge en opgave. Men hvad nu, hvis du ikke er systemadministrator, og din opgave er ikke at opsætte Cron regelmæssigt, det er måske ikke muligt at huske syntaksen, og det åbner op for fejl. Bare rolig, vi har en løsning på dette problem.

Der er flere Cron-formateringsværktøjer tilgængelige online.

# 1. Cron Job Generator Cron Job Generator

er en meget brugervenlig GUI, hvor du kan angive minutter, dage og sti for scriptet til at generere crontab.

Lad os tage et eksempel i realtid, hvor jeg skal udføre /home/processMonitor.sh hvert 5. minut mellem mandag til fredag.

Så jeg fik nedenstående Cron-syntaks, som jeg kan sætte i min crontab ved at udføre
crontab –e

0,5,10,15,20,25,30,35,40,45,50,55 * * * 1-5 /home/processMonitor.sh

# 2. Easycron Easycron

er en nyttig webbaseret cron-jobplanlægger. Vi kan oprette et cron-job ved at angive en URL, der skal kaldes, vi kan indstille tidspunktet for, hvornår det skal udføres. Vi kan også angive et cron-udtryk eller tilføje det manuelt fra en beskrivende form. Vigtigt er det, at vi valgfrit kan bruge grundlæggende HTTP-godkendelse til et lille sikkerhedslag.

Ikke kun dette, men Easycron kan også bruges til at opnå andre formål, såsom standard Cron-udtryk, Cron-jobudførelseslogs, e-mailbesked, separate fejllogfiler osv.

# 3. Crontab Generator Crontab Generator

er et andet praktisk værktøj til at generere crontab, og med dette værktøj kan du også tilføje, hvis du vil gemme cron-output til filen eller sende det til e-mail.

# 4. Crontab Guru Crontab Guru

er en simpel online cron-skemaudtrykseditor. Derudover giver det et nyttigt middel til at overvåge dit cronjob. Alt, hvad vi skal gøre, er at kopiere en givet kommando og tilføje i slutningen af ​​crontab-definitionen. Hvis cron-jobbet mislykkes eller ikke engang starter, vil du modtage en advarsels-e-mail.

I nedenstående eksempel vil Job udføre kl. 04:05, hver dag, hver måned og hver uge.

# 5. CRON Tester CRON tester

giver os mulighed for at teste cron tid/dato definitioner. Der kan være en situation, hvor vi er nødt til at afkode den eksisterende cron-syntaks til fejlfinding eller bare vil lave en test.

For at gøre det kan vi bruge dette værktøj. Alt, hvad vi skal gøre, er at kopiere og indsætte vores cron-udtryk i cron-definitionsfeltet, vælg derefter antallet af iterationer og klik på Test for at se de forskellige datoer, hvor det vil køre.

Lad os tjekke et af vores cron-udtryk 4 3 */2 * *, som skal køre kl. 03:04 (AM) hver anden dag. Lad os verificere det med cron tester.

Konklusion Jeg håber, at ovenstående hjælper dig med at få en bedre forståelse af Crontab og oprettelse af cron-job. Planlægning af job gennem Cron er en af ​​de mange opgaver, der udføres af Linux Admin. Hvis du er interesseret i at lære de avancerede færdigheder, så tjek detteRute

.