15%

БпСстСтС 15% ΠΎΡ‚ всички услуги Π·Π° хостинг

ВСствайтС умСнията си ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Ρ‚Π΅ ΠΎΡ‚ΡΡ‚ΡŠΠΏΠΊΠ° Π·Π° всСки хостинг ΠΏΠ»Π°Π½

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ΄:

Skills
Π—Π° Π½Π°Ρ‡Π°Π»ΠΎ
25.12.2024

Как Π΄Π° ΠΏΡ€Π΅Π³Π»Π΅Π΄Π°Ρ‚Π΅ ΠΈ ΠΈΠ·Π±Ρ€ΠΎΠΈΡ‚Π΅ Cron Jobs с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Crontab

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π°Ρ‚Π° cron Π² Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ систСми позволява Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π΄Π° ΠΏΠ»Π°Π½ΠΈΡ€Π°Ρ‚ Π·Π°Π΄Π°Ρ‡ΠΈ (ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΈΠ»ΠΈ скриптовС) Π΄Π° сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π° ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΈ. НСзависимо Π΄Π°Π»ΠΈ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚Π΅ ΡΡŠΡ€Π²ΡŠΡ€ ΠΈΠ»ΠΈ управляватС Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° Π»ΠΎΠΊΠ°Π»Π½Π° машина, cron Π΅ основСн инструмСнт Π·Π° систСмни администратори ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ.

Π’Π°Π·ΠΈ статия обяснява ΠΊΠ°ΠΊ Π΄Π° ΠΏΡ€Π΅Π³Π»Π΅Π΄Π°Ρ‚Π΅ ΠΈ ΠΈΠ·Π±Ρ€ΠΎΠΈΡ‚Π΅ cron Π·Π°Π΄Π°Ρ‡ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°

crontab
, Π·Π° Π΄Π° Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° управляватС ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΈΡ‚Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ.

Какво Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Crontab?

Crontab (ΡΡŠΠΊΡ€Π°Ρ‚Π΅Π½ΠΎ ΠΎΡ‚ “cron Ρ‚Π°Π±Π»ΠΈΡ†Π°”) Π΅ Ρ„Π°ΠΉΠ», ΠΊΠΎΠΉΡ‚ΠΎ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ Π·Π° cron Π΄Π΅ΠΌΠΎΠ½. ВсСки ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Π² систСма, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ потрСбитСля

root
, ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° своя собствСна crontab, която ΡƒΠΊΠ°Π·Π²Π° ΠΊΠΎΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ.

Запис Π² crontab слСдва слСдния синтаксис:


* * * * * command_to_be_executed
| | | | |
| | | | +----- day of the week (0–7) (Sunday = 0 or 7)
| | | +---------- month (1–12)
| | +--------------- day of the month (1–31)
| +-------------------- hour (0–23)
+------------------------- minute (0–59)

Π’Π°Π·ΠΈ структура позволява ΠΏΡ€Π΅Ρ†ΠΈΠ·Π΅Π½ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π²ΡŠΡ€Ρ…Ρƒ ΠΊΠΎΠ³Π° сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Π·Π°Π΄Π°Ρ‡ΠΈΡ‚Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈ cron ΠΌΠΎΡ‰Π΅Π½ инструмСнт Π·Π° автоматизация.

Как Π΄Π° ΠΈΠ·Π±Ρ€ΠΎΠΈΡ‚Π΅ Cron Π·Π°Π΄Π°Ρ‡ΠΈ с Crontab

ΠšΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°

crontab
Π΅ основната ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° cron Π·Π°Π΄Π°Ρ‡ΠΈ. По-Π΄ΠΎΠ»Ρƒ са Π½Π°ΠΉ-чСсто срСщанитС Π½Π°Ρ‡ΠΈΠ½ΠΈ Π·Π° изброяванС Π½Π° cron Π·Π°Π΄Π°Ρ‡ΠΈ.

1. ΠŸΡ€Π΅Π³Π»Π΅Π΄Π°ΠΉΡ‚Π΅ своитС собствСни Cron Π·Π°Π΄Π°Ρ‡ΠΈ

Π—Π° Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚Π΅ cron Π·Π°Π΄Π°Ρ‡ΠΈ Π·Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΎ влСзлия ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π», ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Ρ‚Π΅:

crontab -l

Π’Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° изброява всички ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΈ cron Π·Π°Π΄Π°Ρ‡ΠΈ Π·Π° тСкущия ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π». Ако няма ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈ cron Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΡŠΡ€Π½Π΅ ΠΏΡ€Π°Π·Π΅Π½ ΠΈΠ·Ρ…ΠΎΠ΄ ΠΈΠ»ΠΈ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅, ΡƒΠΊΠ°Π·Π²Π°Ρ‰ΠΎ, Ρ‡Π΅ няма Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π° crontab.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π΅Π½ ΠΈΠ·Ρ…ΠΎΠ΄:


# m h dom mon dow command
0 0 * * * /home/user/backup.sh
30 2 * * 7 /home/user/scripts/cleanup.sh

Π’ Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

  • Π‘ΠΊΡ€ΠΈΠΏΡ‚ Π·Π° Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎ ΠΊΠΎΠΏΠΈΠ΅ сС изпълнява Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ Π² ΠΏΠΎΠ»ΡƒΠ½ΠΎΡ‰.
  • Π‘ΠΊΡ€ΠΈΠΏΡ‚ Π·Π° почистванС сС изпълнява всяка нСдСля Π² 2:30 Ρ‡.

2. Π˜Π·Π±Ρ€ΠΎΡΠ²Π°Π½Π΅ Π½Π° Cron Π·Π°Π΄Π°Ρ‡ΠΈ Π·Π° Π΄Ρ€ΡƒΠ³ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»

Ако ΠΈΠΌΠ°Ρ‚Π΅

sudo
ΠΈΠ»ΠΈ root ΠΏΡ€Π°Π²Π°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ cron Π·Π°Π΄Π°Ρ‡ΠΈ Π·Π° Π΄Ρ€ΡƒΠ³ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π», ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Ρ„Π»Π°Π³Π°
-u
:

sudo crontab -l -u username

Π—Π°ΠΌΠ΅Π½Π΅Ρ‚Π΅

username
с дСйствитСлното потрСбитСлско ΠΈΠΌΠ΅. НапримСр:

sudo crontab -l -u john

Π’ΠΎΠ²Π° ΠΏΠΎΠΊΠ°Π·Π²Π° всички cron Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΈ Π·Π° посочСния ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π».

3. Π˜Π·Π±Ρ€ΠΎΡΠ²Π°Π½Π΅ Π½Π° систСмни Cron Π·Π°Π΄Π°Ρ‡ΠΈ

Π’ допълнСниС към спСцифичнитС Π·Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» cron Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΈΠΌΠ° систСмни cron Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΈ ΠΎΡ‚ систСмата ΠΈΠ»ΠΈ root потрСбитСля. Π’Π΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π²:

  • /etc/crontab
  • /etc/cron.d/
  • /var/spool/cron/crontabs/

Π—Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ основния систСмСн crontab Ρ„Π°ΠΉΠ», ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Ρ‚Π΅:

cat /etc/crontab

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π΅Π½ ΠΈΠ·Ρ…ΠΎΠ΄:


SHELL=/bin/sh
PATH=/usr/bin:/usr/sbin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

Π’Π°Π·ΠΈ конфигурация ΠΏΠ»Π°Π½ΠΈΡ€Π° часови, Π΄Π½Π΅Π²Π½ΠΈ, сСдмични ΠΈ мСсСчни систСмни ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠΈ.

Π—Π° Π΄Π° ΠΈΠ·Π±Ρ€ΠΎΠΈΡ‚Π΅ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ систСмни cron Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Ρ‚Π΅:

ls /etc/cron.d/

ВсСки Ρ„Π°ΠΉΠ» Π² Ρ‚Π°Π·ΠΈ дирСктория ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ Π·Π° систСмни услуги.

4. ΠŸΡ€Π΅Π³Π»Π΅Π΄ Π½Π° Cron Π·Π°Π΄Π°Ρ‡ΠΈ Π² /var/spool/cron

Π€Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅ crontab, спСцифични Π·Π° потрСбитСля, ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π²

/var/spool/cron/crontabs
. Π—Π° Π΄Π° Π³ΠΈ ΠΈΠ·Π±Ρ€ΠΎΠΈΡ‚Π΅:

ls /var/spool/cron/crontabs

Π—Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° crontab Ρ„Π°ΠΉΠ»Π° Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»:

cat /var/spool/cron/crontabs/username

Π’ΠΎΠ²Π° прСдоставя ΡΡŠΡ‰ΠΈΡ ΠΈΠ·Ρ…ΠΎΠ΄ ΠΊΠ°Ρ‚ΠΎ

crontab -l -u username
.

Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Π½Π΅ Π½Π° Cron Π·Π°Π΄Π°Ρ‡ΠΈ

Π—Π° Π΄Π° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Ρ‚Π΅ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ cron Π·Π°Π΄Π°Ρ‡ΠΈ Π·Π° тСкущия ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π», ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Ρ‚Π΅:

crontab -e

Π’ΠΎΠ²Π° отваря crontab Ρ„Π°ΠΉΠ»Π° Π² тСкстовия Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅. Π‘Π»Π΅Π΄ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ ΠΈ ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅, ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π²Π»ΠΈΠ·Π°Ρ‚ Π² сила Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°ΠΉΡ‚Π΅ скрипт всСки Π΄Π΅Π½ Π² 3:00 Ρ‡:

0 3 * * * /home/user/script.sh

ЧСсто срСщани ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° изброяванС Π½Π° Crontab

  • Π˜Π·Π±Ρ€ΠΎΡΠ²Π°Π½Π΅ Π½Π° cron Π·Π°Π΄Π°Ρ‡ΠΈΡ‚Π΅ Π½Π° тСкущия ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»:
    crontab -l
  • Π˜Π·Π±Ρ€ΠΎΡΠ²Π°Π½Π΅ Π½Π° cron Π·Π°Π΄Π°Ρ‡ΠΈΡ‚Π΅ Π½Π° Π΄Ρ€ΡƒΠ³ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» (изисква sudo):
    sudo crontab -l -u username
  • ΠŸΡ€Π΅Π³Π»Π΅Π΄ Π½Π° систСмния crontab:
    cat /etc/crontab
  • Π˜Π·Π±Ρ€ΠΎΡΠ²Π°Π½Π΅ Π½Π° cron Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π² /etc/cron.d/:
    ls /etc/cron.d/
  • Π˜Π·Π±Ρ€ΠΎΡΠ²Π°Π½Π΅ Π½Π° потрСбитСлски crontabs:
    ls /var/spool/cron/crontabs

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠŸΡ€Π΅Π³Π»Π΅Π΄ΡŠΡ‚ ΠΈ изброяванСто Π½Π° cron Π·Π°Π΄Π°Ρ‡ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π°

crontab
Π΅ прост, Π½ΠΎ ΠΌΠΎΡ‰Π΅Π½ Π½Π°Ρ‡ΠΈΠ½ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ Π² Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ систСми. НСзависимо Π΄Π°Π»ΠΈ сС Π·Π°Π½ΠΈΠΌΠ°Π²Π°Ρ‚Π΅ с Π»ΠΈΡ‡Π½Π° автоматизация ΠΈΠ»ΠΈ систСмни ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠΈ, Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚Π΅Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°, Ρ‡Π΅ Π²Π°ΡˆΠΈΡ‚Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎ ΠΈ ΠΏΠΎ Π³Ρ€Π°Ρ„ΠΈΠΊ.

ΠšΠ°Ρ‚ΠΎ ΠΎΠ²Π»Π°Π΄Π΅Π΅Ρ‚Π΅ cron, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ повтарящи сС Π·Π°Π΄Π°Ρ‡ΠΈ, Π΄Π° управляватС Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΈ копия ΠΈ Π΄Π° ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚Π΅ послСдоватСлно изпълнСниС Π½Π° скриптовС Π² цялата си срСда.

15%

БпСстСтС 15% ΠΎΡ‚ всички услуги Π·Π° хостинг

ВСствайтС умСнията си ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Ρ‚Π΅ ΠΎΡ‚ΡΡ‚ΡŠΠΏΠΊΠ° Π·Π° всСки хостинг ΠΏΠ»Π°Π½

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ΄:

Skills
Π—Π° Π½Π°Ρ‡Π°Π»ΠΎ