ΠΠ°ΠΊ Π΄Π° ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΡΠ΅ ΠΈ ΠΈΠ·Π±ΡΠΎΠΈΡΠ΅ Cron Jobs Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Crontab
Π£ΡΠΈΠ»ΠΈΡΠ°ΡΠ° cron Π² Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π΄Π° ΠΏΠ»Π°Π½ΠΈΡΠ°Ρ Π·Π°Π΄Π°ΡΠΈ (ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΈΠ»ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅) Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π° ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΈ. ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ Π΄Π°Π»ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΡΠ΅ ΡΡΡΠ²ΡΡ ΠΈΠ»ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π·Π°Π΄Π°ΡΠΈ Π½Π° Π»ΠΎΠΊΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π°, cron Π΅ ΠΎΡΠ½ΠΎΠ²Π΅Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΈ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ.
Π’Π°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΠΎΠ±ΡΡΠ½ΡΠ²Π° ΠΊΠ°ΠΊ Π΄Π° ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΡΠ΅ ΠΈ ΠΈΠ·Π±ΡΠΎΠΈΡΠ΅ cron Π·Π°Π΄Π°ΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ°
crontabΠΠ°ΠΊΠ²ΠΎ Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Crontab?
Crontab (ΡΡΠΊΡΠ°ΡΠ΅Π½ΠΎ ΠΎΡ “cron ΡΠ°Π±Π»ΠΈΡΠ°”) Π΅ ΡΠ°ΠΉΠ», ΠΊΠΎΠΉΡΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ° ΠΏΠ»Π°Π½ΠΈΡΠ°Π½ΠΈ Π·Π°Π΄Π°ΡΠΈ Π·Π° cron Π΄Π΅ΠΌΠΎΠ½. ΠΡΠ΅ΠΊΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» Π² ΡΠΈΡΡΠ΅ΠΌΠ°, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ
rootΠΠ°ΠΏΠΈΡ Π² 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
ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ°
crontab1. ΠΡΠ΅Π³Π»Π΅Π΄Π°ΠΉΡΠ΅ ΡΠ²ΠΎΠΈΡΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ 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-usudo crontab -l -u usernameΠΠ°ΠΌΠ΅Π½Π΅ΡΠ΅
usernamesudo 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/crontabsls /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ΠΠ°ΡΠΎ ΠΎΠ²Π»Π°Π΄Π΅Π΅ΡΠ΅ cron, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΠΏΠΎΠ²ΡΠ°ΡΡΡΠΈ ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ, Π΄Π° ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΈ ΠΊΠΎΠΏΠΈΡ ΠΈ Π΄Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π² ΡΡΠ»Π°ΡΠ° ΡΠΈ ΡΡΠ΅Π΄Π°.
