ΠΠ°ΠΊ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΠΈ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ Cron Jobs Ρ ΠΏΠΎΠΌΠΎΡΡΡ Crontab
ΠΠΎΠΌΠ°Π½Π΄Π° crontab ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ°, ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Unix cron. Π§ΡΠΎΠ±Ρ Π²ΡΠ²Π΅ΡΡΠΈ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ
cron-Π·Π°Π΄Π°Π½ΠΈΠΉ Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ crontab -l Π² Π»ΡΠ±ΠΎΠΌ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅. ΠΠ»Ρ Π·Π°Π΄Π°Π½ΠΈΠΉ root ΠΈΠ»ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ
Π·Π°Π΄Π°Π½ΠΈΠΉ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ /etc/crontab, /etc/cron.d/ ΠΈ /var/spool/cron/crontabs/ Π½Π°ΠΏΡΡΠΌΡΡ.
Cron ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²ΠΎΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ Π·Π°Π΄Π°Ρ Π² Linux ΠΈ Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ . ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ Π½ΠΎΡΠ½ΡΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΠ΅ ΠΊΠΎΠΏΠΈΠΈ Π±Π°Π· Π΄Π°Π½Π½ΡΡ Π² ΡΡΠ΅Π΄Π΅ VPS Π₯ΠΎΡΡΠΈΠ½Π³Π°, ΡΠΎΡΠ°ΡΠΈΡ Π»ΠΎΠ³ΠΎΠ² Π½Π° ΠΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΈΠ»ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΠ΅ SSL Π‘Π΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ ΡΠ΅ΡΠ΅Π· Certbot, ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΡΡ Π²ΡΠ΅ Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π·Π°Π΄Π°Π½ΠΈΡ Π½Π° ΠΌΠ°ΡΠΈΠ½Π΅, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌ Π½Π°Π²ΡΠΊΠΎΠΌ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°. ΠΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΎΡ Π²Π°ΡΡΠ²Π°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΡΡΠ΅ΠΊΠ° cron β ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ crontab, ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ crontab, Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ drop-in ΠΈ ΡΠΏΡΠ» β Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅Π°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΡΠ΅ ΠΊΠ°ΠΌΠ½ΠΈ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Π΄Π°ΠΆΠ΅ ΠΎΠΏΡΡΠ½ΡΠ΅ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΡ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Crontab ΠΈ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Cron
Crontab (ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ Β«cron tableΒ») β ΡΡΠΎ ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π΄Π΅ΠΌΠΎΠ½Ρ crond, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ ΠΊΠΎΠ³Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΡΡ. ΠΠ°ΠΆΠ΄Π°Ρ ΡΡΡΡΠ½Π°Ρ Π·Π°ΠΏΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ β Π²ΠΊΠ»ΡΡΠ°Ρ root β ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ crontab. ΠΠ΅ΠΌΠΎΠ½ ΡΠΈΡΠ°Π΅Ρ ΡΡΠΈ ΡΠ°ΠΉΠ»Ρ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΈ ΠΏΠΎΡΠ»Π΅ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π·Π°ΡΠ΅ΠΌ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ Π·Π°Π΄Π°Π½ΠΈΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΈΡ
Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠΌΠΈ.
ΠΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ° cron Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π΅ Linux ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΡΠΎΠ²Π½Π΅ΠΉ:
- ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ crontab β ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ ΡΠ΅ΡΠ΅Π·
crontab -eΠΈ Ρ ΡΠ°Π½ΡΡΡΡ Π²/var/spool/cron/crontabs/(Debian/Ubuntu) ΠΈΠ»ΠΈ/var/spool/cron/(RHEL/CentOS) - Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ crontab β ΡΠ°ΠΉΠ»
/etc/crontab, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅userΠ΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ - ΠΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ drop-in β
/etc/cron.d/, Π³Π΄Π΅ ΠΏΠ°ΠΊΠ΅ΡΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π·Π°Π΄Π°Π½ΠΈΠΉ - ΠΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ run-parts β
/etc/cron.hourly/,/etc/cron.daily/,/etc/cron.weekly/,/etc/cron.monthly/, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ, Π° Π½Π΅ ΡΠ°ΠΉΠ»Ρ Π² ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ crontab - Anacron β Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ cron, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π·Π°Π΄Π°Π½ΠΈΡ Π½Π° ΠΌΠ°ΡΠΈΠ½Π°Ρ
, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ
Π½Π΅ ΠΊΡΡΠ³Π»ΠΎΡΡΡΠΎΡΠ½ΠΎ, ΡΠΈΡΠ°Ρ ΠΈΠ·
/etc/anacrontab
ΠΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π·Π°Π΄Π°Π½ΠΈΠ΅, ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½ΠΎ ΠΏΡΠΈ Π°ΡΠ΄ΠΈΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ crontab -l Π² ΠΎΠ΄ΠΈΠ½ΠΎΡΠΊΡ ΠΏΡΠΎΠΏΡΡΡΠΈΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
Π·Π°Π΄Π°Ρ Π² ΡΠΈΠΏΠΈΡΠ½ΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠΎΠ»Π΅ΠΉ Crontab
ΠΠ°ΠΆΠ΄Π°Ρ Π·Π°ΠΏΠΈΡΡ crontab ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΡΡΠΈΠΏΠΎΠ»ΡΠ½ΠΎΠΉ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:
* * * * * command_to_execute
| | | | |
| | | | +----- 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:
| Π‘ΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ | ΠΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ | ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ |
|---|---|---|
@reboot | β | ΠΠ°ΠΏΡΡΡΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΏΡΠΈ ΡΡΠ°ΡΡΠ΅ Π΄Π΅ΠΌΠΎΠ½Π° |
@yearly | 0 0 1 1 * | ΠΠ΄ΠΈΠ½ ΡΠ°Π· Π² Π³ΠΎΠ΄ |
@monthly | 0 0 1 * * | ΠΠ΅ΡΠ²ΡΠΉ Π΄Π΅Π½Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΡΠ° |
@weekly | 0 0 * * 0 | ΠΠ°ΠΆΠ΄ΠΎΠ΅ Π²ΠΎΡΠΊΡΠ΅ΡΠ΅Π½ΡΠ΅ Π² ΠΏΠΎΠ»Π½ΠΎΡΡ |
@daily | 0 0 * * * | ΠΠ°ΠΆΠ΄ΡΠΉ Π΄Π΅Π½Ρ Π² ΠΏΠΎΠ»Π½ΠΎΡΡ |
@hourly | 0 * * * * | Π Π½Π°ΡΠ°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ°ΡΠ° |
Π€Π°ΠΉΠ»Ρ /etc/crontab ΠΈ /etc/cron.d/ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠ΅ΡΡΠΎΠ΅ ΠΏΠΎΠ»Π΅ β ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° β ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ ΠΈ ΡΠ°ΠΌΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ.
ΠΠ°ΠΊ Π²ΡΠ²Π΅ΡΡΠΈ ΡΠΏΠΈΡΠΎΠΊ Cron-Π·Π°Π΄Π°Π½ΠΈΠΉ: Π²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ
1. ΠΡΠΎΡΠΌΠΎΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ Cron-Π·Π°Π΄Π°Π½ΠΈΠΉ
crontab -lΠΡΠΎ Π²ΡΠ²ΠΎΠ΄ΠΈΡ crontab Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. ΠΡΠ»ΠΈ crontab Π΅ΡΡ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ Π»ΠΈΠ±ΠΎ ΠΏΡΡΡΠΎΠΉ Π²ΡΠ²ΠΎΠ΄, Π»ΠΈΠ±ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ no crontab for <username> β ΠΎΠ±Π° Π²Π°ΡΠΈΠ°Π½ΡΠ° ΡΠ²Π»ΡΡΡΡΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΡΠΌΠΈ.
ΠΡΠΈΠΌΠ΅Ρ Π²ΡΠ²ΠΎΠ΄Π°:
# m h dom mon dow command
0 0 * * * /home/deploy/backup.sh
30 2 * * 7 /home/deploy/scripts/cleanup.sh
15 */4 * * * /usr/local/bin/health-check.sh >> /var/log/health.log 2>&1Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅:
backup.sh Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄Π΅Π½Ρ Π² ΠΏΠΎΠ»Π½ΠΎΡΡ
cleanup.sh Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π²ΠΎΡΠΊΡΠ΅ΡΠ΅Π½ΡΠ΅ Π² 02:30
health-check.sh Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠ΅ ΡΠ΅ΡΡΡΠ΅ ΡΠ°ΡΠ° Π½Π°ΡΠΈΠ½Π°Ρ Ρ 00:15, Ρ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ stdout ΠΈ stderr Π² ΡΠ°ΠΉΠ» ΠΆΡΡΠ½Π°Π»Π°
ΠΠΎΠ΄Π²ΠΎΠ΄Π½ΡΠΉ ΠΊΠ°ΠΌΠ΅Π½Ρ: ΠΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ²ΠΎΠ΄Π° (>>, 2>&1) ΡΠ°ΡΡΠΎ ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π² Π·Π°ΠΏΠΈΡΡΡ
crontab. ΠΠ΅Π· Π½Π΅Π³ΠΎ cron ΠΏΡΡΠ°Π΅ΡΡΡ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π²ΡΠ²ΠΎΠ΄ ΠΏΠΎ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ΅ΡΠ΅Π· sendmail. ΠΠ° ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ
Π±Π΅Π· Π°Π³Π΅Π½ΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΏΠΎΡΡΡ ΡΡΠΎ ΠΌΠΎΠ»ΡΠ° ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ Π²Π΅ΡΡ Π²ΡΠ²ΠΎΠ΄ ΠΈ Π΄Π΅Π»Π°Π΅Ρ ΠΎΡΠ»Π°Π΄ΠΊΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ. ΠΡΠ΅Π³Π΄Π° ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»ΡΠΉΡΠ΅ Π²ΡΠ²ΠΎΠ΄ ΠΈΠ»ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΠΉΡΠ΅ MAILTO="" Π² Π½Π°ΡΠ°Π»Π΅ crontab.
2. ΠΡΠΎΡΠΌΠΎΡΡ Cron-Π·Π°Π΄Π°Π½ΠΈΠΉ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
Π‘ ΠΏΡΠ°Π²Π°ΠΌΠΈ sudo ΠΈΠ»ΠΈ root Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ crontab Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ:
sudo crontab -l -u john
ΠΠ°ΠΌΠ΅Π½ΠΈΡΠ΅ john Π½Π° ΠΈΠΌΡ ΡΠ΅Π»Π΅Π²ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎ ΡΡΠ΅Π½ΠΈΡ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΡΠΏΡΠ»Π°, Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½Π΅Π΅ ΠΏΡΡΠΌΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°ΠΉΠ»Ρ.
3. ΠΡΠΎΡΠΌΠΎΡΡ Π²ΡΠ΅Ρ
ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ
Crontab ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ
ΠΠ° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΈΡΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ β Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ Π½Π°Π΄ΡΠΆΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ»Π½ΡΡ ΠΊΠ°ΡΡΠΈΠ½Ρ:
for user in $(cut -f1 -d: /etc/passwd); do
echo "=== Crontab for: $user ==="
sudo crontab -l -u "$user" 2>/dev/null
done
Π€Π»Π°Π³ 2>/dev/null ΠΏΠΎΠ΄Π°Π²Π»ΡΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Β«no crontab forΒ» Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, Ρ ΠΊΠΎΡΠΎΡΡΡ
Π½Π΅Ρ crontab, ΡΠΎΡ
ΡΠ°Π½ΡΡ Π²ΡΠ²ΠΎΠ΄ ΡΠΈΡΡΡΠΌ.
4. ΠΡΠΎΡΠΌΠΎΡΡ ΠΎΠ±ΡΠ΅ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Crontab
cat /etc/crontab
Π’ΠΈΠΏΠΈΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Debian:
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# 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 )
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π·Π°ΡΠΈΡΡ test -x /usr/sbin/anacron: Π΅ΡΠ»ΠΈ anacron ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½, ΡΡΠΈ Π²ΡΠ·ΠΎΠ²Ρ run-parts ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡΡΡ, ΠΈ anacron Π±Π΅ΡΡΡ Π½Π° ΡΠ΅Π±Ρ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ Π·Π° Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΡΠ΅, Π΅ΠΆΠ΅Π½Π΅Π΄Π΅Π»ΡΠ½ΡΠ΅ ΠΈ Π΅ΠΆΠ΅ΠΌΠ΅ΡΡΡΠ½ΡΠ΅ Π·Π°Π΄Π°Π½ΠΈΡ. ΠΡΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΏΡΡΠ°Π½ΠΈΡΡ, ΠΊΠΎΠ³Π΄Π° Π·Π°Π΄Π°Π½ΠΈΡ, ΠΏΠΎ Π²ΡΠ΅ΠΉ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ, Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠΎ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΡ.
5. ΠΡΠΎΡΠΌΠΎΡΡ Π·Π°Π΄Π°Π½ΠΈΠΉ Π² /etc/cron.d/
ls -la /etc/cron.d/
Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Π·Π° ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΡ
ΠΎΠ΄:
grep -v '^#|^$' /etc/cron.d/*
ΠΡΠΎ ΡΠ±ΠΈΡΠ°Π΅Ρ ΡΡΡΠΎΠΊΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² ΠΈ ΠΏΡΡΡΡΠ΅ ΡΡΡΠΎΠΊΠΈ, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Ρ ΡΠΎΠ»ΡΠΊΠΎ Π°ΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π·Π°Π΄Π°Π½ΠΈΠΉ. ΠΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΡΠ°ΡΡΠΎ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ ΡΠ°ΠΉΠ»Ρ ΡΡΠ΄Π° β ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ Π²ΠΊΠ»ΡΡΠ°ΡΡ sysstat, ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ logrotate ΠΈ Π°Π³Π΅Π½ΡΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°.
6. ΠΡΡΠΌΠ°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΡΠΏΡΠ»Π° Cron
ls -la /var/spool/cron/crontabs/
Π RHEL, CentOS ΠΈ Fedora ΠΏΡΡΡ β /var/spool/cron/ Π±Π΅Π· ΠΏΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ crontabs. Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» ΡΠΏΡΠ»Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ:
sudo cat /var/spool/cron/crontabs/username
ΠΠ°ΠΆΠ½ΠΎ: ΠΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΡΠΏΡΠ»Π° Π½Π°ΠΏΡΡΠΌΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°. ΠΠΎΠΌΠ°Π½Π΄Π° crontab -e ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. ΠΡΡΠΌΠΎΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ²ΡΠ΅Π΄ΠΈΡΡ ΡΠ°ΠΉΠ» ΠΈΠ»ΠΈ ΠΎΡΡΠ°Π²ΠΈΡΡ Π΅Π³ΠΎ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ crond ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π΅Π³ΠΎ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅Ρ.
7. ΠΡΠΎΡΠΌΠΎΡΡ Π·Π°Π΄Π°Π½ΠΈΠΉ Anacron
ΠΡΠ»ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ anacron Π΄Π»Ρ Π½Π°Π΄ΡΠΆΠ½ΠΎΠ³ΠΎ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ:
cat /etc/anacrontab
ΠΠ°ΠΏΠΈΡΠΈ Anacron ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ β ΠΏΠ΅ΡΠΈΠΎΠ΄ Π² Π΄Π½ΡΡ
, Π·Π°Π΄Π΅ΡΠΆΠΊΠ° Π² ΠΌΠΈΠ½ΡΡΠ°Ρ
, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π·Π°Π΄Π°Π½ΠΈΡ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° β Π° Π½Π΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΏΡΡΠΈΠΏΠΎΠ»ΡΠ½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ cron.
8. ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ°ΠΉΠΌΠ΅ΡΠΎΠ² Systemd (ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π°)
Π Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°Ρ
Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ systemd ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ»ΠΈΡΡ cron, ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ°ΠΌΠΈ systemd. ΠΠ½ΠΈ Π½Π΅ Π±ΡΠ΄ΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π½ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅ crontab:
systemctl list-timers --all
ΠΠΎΠ»Π½ΡΠΉ Π°ΡΠ΄ΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΊΠ°ΠΊ cron, ΡΠ°ΠΊ ΠΈ ΡΠ°ΠΉΠΌΠ΅ΡΠΎΠ² systemd. ΠΠ΅ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΡ
ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ² Π² ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°Ρ
Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ.
ΠΠΎΠ»Π½ΡΠΉ Π°ΡΠ΄ΠΈΡ Cron: ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ°
ΠΠ»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΈ Π²ΡΠ΅ΡΡΠΎΡΠΎΠ½Π½Π΅Π³ΠΎ Π°ΡΠ΄ΠΈΡΠ° Π²ΡΠ΅Ρ
Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
Π·Π°Π΄Π°Ρ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΠ΅ Π²ΡΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΈ:
echo "=== /etc/crontab ===" && cat /etc/crontab
echo "=== /etc/cron.d/ ===" && ls /etc/cron.d/ && grep -rh '' /etc/cron.d/
echo "=== User crontabs ===" && for u in $(cut -d: -f1 /etc/passwd); do sudo crontab -l -u "$u" 2>/dev/null && echo " ^ user: $u"; done
echo "=== Systemd timers ===" && systemctl list-timers --all --no-pager
Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Cron-Π·Π°Π΄Π°Π½ΠΈΡΠΌΠΈ
Π§ΡΠΎΠ±Ρ ΠΎΡΠΊΡΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ crontab Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ ($VISUAL ΠΈΠ»ΠΈ $EDITOR, Ρ ΠΎΡΠΊΠ°ΡΠΎΠΌ ΠΊ vi):
crontab -e
Π§ΡΠΎΠ±Ρ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ crontab Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ root:
sudo crontab -e -u username
Π§ΡΠΎΠ±Ρ ΡΠ΄Π°Π»ΠΈΡΡ Π²ΡΠ΅ cron-Π·Π°Π΄Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Ρ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎΡΡΡΡ β ΡΡΠΎ Π½Π΅ΠΎΠ±ΡΠ°ΡΠΈΠΌΠΎ Π±Π΅Π· ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ):
crontab -r
Π§ΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΡ ΠΊΠΎΠΏΠΈΡ crontab ΠΏΠ΅ΡΠ΅Π΄ Π²Π½Π΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ:
crontab -l > ~/crontab_backup_$(date +%F).txt
ΠΡΠ΅Π³Π΄Π° Π΄Π΅Π»Π°ΠΉΡΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΡ ΠΊΠΎΠΏΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. Π crontab -e Π½Π΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡΠΌΠ΅Π½Ρ.
Cron vs. ΡΠ°ΠΉΠΌΠ΅ΡΡ Systemd: ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ
Π€ΡΠ½ΠΊΡΠΈΡ
Cron
Π’Π°ΠΉΠΌΠ΅ΡΡ Systemd
Π€ΠΎΡΠΌΠ°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ
ΠΡΠΎΡΡΠΎΠΉ ΡΠ΅ΠΊΡΡ, ΠΏΡΡΠΈΠΏΠΎΠ»ΡΠ½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ
Π€Π°ΠΉΠ»Ρ ΡΠ½ΠΈΡΠΎΠ² (.timer + .service)
ΠΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
ΠΠ°, ΡΠ΅ΡΠ΅Π· ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ crontab
ΠΠ°, ΡΠ΅ΡΠ΅Π· ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ systemd
ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠΏΡΡΠ΅Π½Π½ΡΡ
Π·Π°Π΄Π°Π½ΠΈΠΉ
ΠΠ΅Ρ (Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ, Π΅ΡΠ»ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ° Π²ΡΠΊΠ»ΡΡΠ΅Π½Π°)
ΠΠ°, Ρ Persistent=true
ΠΡΡΠ½Π°Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
Syslog / ΠΏΠΎΡΡΠ°
Journald (Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ journalctl)
Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ
ΠΠ΅Ρ
ΠΠΎΠ»Π½ΡΠΉ Π³ΡΠ°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ systemd
Π‘Π»ΡΡΠ°ΠΉΠ½Π°Ρ Π·Π°Π΄Π΅ΡΠΆΠΊΠ°
ΠΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π° (ΡΡΠ΅Π±ΡΠ΅Ρ sleep $RANDOM)
RandomizedDelaySec=
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ
ΠΠΈΠ·ΠΊΠ°Ρ
Π‘ΡΠ΅Π΄Π½ΡΡ
ΠΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ
ΠΡΠ΅ Unix/Linux ΡΠΈΡΡΠ΅ΠΌΡ
Π’ΠΎΠ»ΡΠΊΠΎ Linux Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Systemd
ΠΠ»Ρ ΠΏΡΠΎΡΡΠΎΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² Π»ΡΠ±ΠΎΠΉ Unix-ΡΠΈΡΡΠ΅ΠΌΠ΅ β Π²ΠΊΠ»ΡΡΠ°Ρ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠ΅ ΡΡΠ΅Π΄Ρ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ β cron ΠΎΡΡΠ°ΡΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΡΠΌ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎ ΠΏΡΠΎΡΡΡΠΌ Π²ΡΠ±ΠΎΡΠΎΠΌ. Π’Π°ΠΉΠΌΠ΅ΡΡ systemd ΠΏΡΠ΅Π²ΠΎΡΡ
ΠΎΠ΄ΡΡ Π΅Π³ΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡΠΆΠ½Π° ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΠΎΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, Π½Π°Π΄ΡΠΆΠ½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΏΡΡΠ΅Π½Π½ΡΡ
Π·Π°Π΄Π°Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ ΠΆΡΡΠ½Π°Π»Π°.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Crontab: ΠΊΡΠ°ΡΠΊΠΈΠΉ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ
Π¦Π΅Π»Ρ
ΠΠΎΠΌΠ°Π½Π΄Π°
Π‘ΠΏΠΈΡΠΎΠΊ Π·Π°Π΄Π°Π½ΠΈΠΉ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
crontab -l
Π‘ΠΏΠΈΡΠΎΠΊ Π·Π°Π΄Π°Π½ΠΈΠΉ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
sudo crontab -l -u username
Π‘ΠΏΠΈΡΠΎΠΊ Π·Π°Π΄Π°Π½ΠΈΠΉ Π²ΡΠ΅Ρ
ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ
for u in $(cut -d: -f1 /etc/passwd); do sudo crontab -l -u "$u" 2>/dev/null; done
ΠΡΠΎΡΠΌΠΎΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ crontab
cat /etc/crontab
Π‘ΠΏΠΈΡΠΎΠΊ Π·Π°Π΄Π°Π½ΠΈΠΉ cron.d
ls /etc/cron.d/
ΠΡΠΎΡΠΌΠΎΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΡΠΏΡΠ»Π°
ls /var/spool/cron/crontabs/
ΠΡΠΎΡΠΌΠΎΡΡ Π·Π°Π΄Π°Π½ΠΈΠΉ anacron
cat /etc/anacrontab
Π‘ΠΏΠΈΡΠΎΠΊ ΡΠ°ΠΉΠΌΠ΅ΡΠΎΠ² systemd
systemctl list-timers --all
Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ crontab ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
crontab -e
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ crontab ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
crontab -r
Π Π΅Π°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΡΠ΅ ΠΊΠ°ΠΌΠ½ΠΈ ΠΈ Π³ΡΠ°Π½ΠΈΡΠ½ΡΠ΅ ΡΠ»ΡΡΠ°ΠΈ
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Π½Π΅ Π½Π°ΡΠ»Π΅Π΄ΡΡΡΡΡ. Cron Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ Π·Π°Π΄Π°Π½ΠΈΡ Π² ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ΅Π΄Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ PATH, HOME ΠΈ LANG, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ Π² Π²Π°ΡΠ΅ΠΌ .bashrc ΠΈΠ»ΠΈ .profile, Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Ρ. ΠΡΠ΅Π³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π°Π±ΡΠΎΠ»ΡΡΠ½ΡΠ΅ ΠΏΡΡΠΈ Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ Π±ΠΈΠ½Π°ΡΠ½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ ΡΠ²Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠΉΡΠ΅ PATH Π² Π½Π°ΡΠ°Π»Π΅ crontab.
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ MAILTO ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π²ΡΠ²ΠΎΠ΄Π°. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ MAILTO="" Π΄Π»Ρ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π½ΠΈΡ Π²ΡΠ²ΠΎΠ΄Π° ΠΈΠ»ΠΈ MAILTO="admin@example.com" Π΄Π»Ρ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ Π°Π΄ΡΠ΅Ρ. ΠΠ΅Π· Π½Π°ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ MTA Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΌΠΎΠ»ΡΠ°Π»ΠΈΠ²ΡΠ΅ ΡΠ±ΠΎΠΈ.
ΠΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠΊΡΠΈΠΏΡΠ°ΠΌ ΠΈΠΌΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. Π‘ΠΊΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅, ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π²Π΅ΡΡΠΈΡΡΡΡ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ ΠΏΠΎΠ΄ cron, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌ (chmod +x) ΠΈΠ»ΠΈ Π΅ΡΠ»ΠΈ ΠΎΠ½ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ cron Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ.
ΠΠ΅ΡΠ΅ΠΊΡΡΠ²Π°ΡΡΠ΅Π΅ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Π½ΠΈΠΉ. ΠΡΠ»ΠΈ Π·Π°Π΄Π°Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄ΠΎΠ»ΡΡΠ΅ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π°, Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² Π±ΡΠ΄ΡΡ Π·Π°ΠΏΡΡΠ΅Π½Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΈΠ»ΠΈ flock Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ:
0 * * * * /usr/bin/flock -n /tmp/myjob.lock /home/user/long-running-job.sh
Π£ΡΡΡ ΡΠ°ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ°. Cron ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΡΠ°ΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠ° ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ
Ρ UTC, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΌ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ
ΡΠ°ΡΠΎΠ² β ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠΉ Π½Π° VPS Π₯ΠΎΡΡΠΈΠ½Π³Π΅ ΠΈ ΠΡΠ΄Π΅Π»Π΅Π½Π½ΡΡ
ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ
β ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Π°ΡΠ΅ Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ cron ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ CRON_TZ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ crontab.
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Crontab. ΠΠ΅ΡΠ΅Π΄ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΠ΅ΠΌ Π½ΠΎΠ²ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ crontab Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°, ΠΊΠ°ΠΊ crontab.guru, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π²Π°ΡΠΈΠΌ Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΡΠΌ.
ΠΡΡΠ½Π°Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ° Cron-Π·Π°Π΄Π°Π½ΠΈΠΉ
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ cron Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Π½ΠΈΠΉ Π² syslog. Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ cron:
grep CRON /var/log/syslog | tail -50
Π ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ systemd:
journalctl -u cron --since "1 hour ago"
ΠΡΠ»ΠΈ Π·Π°Π΄Π°Π½ΠΈΠ΅ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅:
ΠΠ΅ΠΌΠΎΠ½ cron Π°ΠΊΡΠΈΠ²Π΅Π½: systemctl status cron (ΠΈΠ»ΠΈ crond Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ RHEL)
Π‘ΠΊΡΠΈΠΏΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌ ΠΈ ΠΏΡΡΡ ΡΠΊΠ°Π·Π°Π½ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ
ΠΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΠΎΠ»Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½Ρ
ΠΡΠ²ΠΎΠ΄ Π½Π΅ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΡΡΡ ΠΌΠΎΠ»ΡΠ° β Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ >> /tmp/job.log 2>&1ΠΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ ΡΡΠ΅ΠΊΠ°ΠΌΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ Π½Π° VPS Ρ cPanel, cPanel ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Cron Jobs Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Advanced, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ Π½Π°ΠΏΡΡΠΌΡΡ Π² crontab ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠ°Π΄Π°Π½ΠΈΡ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π· cPanel, ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π²ΠΈΠ΄Π½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ crontab -l ΠΈ Π²Π΅Π΄ΡΡ ΡΠ΅Π±Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎ Π·Π°ΠΏΠΈΡΡΠΌ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΠΌ Π²ΡΡΡΠ½ΡΡ.
ΠΠ°ΡΡΠΈΡΠ° ΡΠ΅ΡΠ΅Π½ΠΈΠΉ: ΠΊΠ°ΠΊΠΎΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Cron ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
| Π‘ΡΠ΅Π½Π°ΡΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ | Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ |
|---|---|
| ΠΠΈΡΠ½Π°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ | ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ crontab (crontab -e) |
| ΠΠ°Π΄Π°ΡΠΈ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ (ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠΎΡΠ°ΡΠΈΡ Π»ΠΎΠ³ΠΎΠ²) | /etc/cron.d/ ΠΈΠ»ΠΈ /etc/crontab |
| Π‘ΠΊΡΠΈΠΏΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π΄Π°ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΎΠΏΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΡ | Anacron (/etc/anacrontab) |
| ΠΠ°Π΄Π°ΡΠΈ ΡΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ ΠΈΠ»ΠΈ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² | Π’Π°ΠΉΠΌΠ΅ΡΡ Systemd |
| ΠΠ°Π΄Π°Π½ΠΈΡ ΡΡΠΎΠ²Π½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π΅ΠΌΡΠ΅ Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ | /etc/cron.d/<package-name> |
| ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½ΡΠ΅ ΡΡΠ΅Π΄Ρ | Supervisor + cron ΠΈΠ»ΠΈ Kubernetes CronJob |
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ»ΡΡΠ΅Π²ΡΡ Π²ΡΠ²ΠΎΠ΄ΠΎΠ²
- ΠΠ°ΠΏΡΡΡΠΈΡΠ΅
crontab -lΠ΄Π»Ρ Π°ΡΠ΄ΠΈΡΠ° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ Π·Π°Π΄Π°Π½ΠΈΠΉ; ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½ ΡΠΈΠΊΠ»Π°forΠ΄Π»Ρ Π°ΡΠ΄ΠΈΡΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅. - ΠΡΠ΅Π³Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅
/etc/crontab,/etc/cron.d/ΠΈsystemctl list-timers --allβcrontab -lΠ² ΠΎΠ΄ΠΈΠ½ΠΎΡΠΊΡ Π΄Π°ΡΡ Π½Π΅ΠΏΠΎΠ»Π½ΡΡ ΠΊΠ°ΡΡΠΈΠ½Ρ. - ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π°Π±ΡΠΎΠ»ΡΡΠ½ΡΠ΅ ΠΏΡΡΠΈ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ Π±ΠΈΠ½Π°ΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π²Π½ΡΡΡΠΈ Π·Π°ΠΏΠΈΡΠ΅ΠΉ crontab.
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅
MAILTO=""ΠΈΠ»ΠΈ ΡΠ²Π½ΠΎ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»ΡΠΉΡΠ΅ Π²ΡΠ²ΠΎΠ΄ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ»ΡΠ°Π»ΠΈΠ²ΡΡ ΡΠ±ΠΎΠ΅Π² Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ Π±Π΅Π· MTA. - Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΡ ΠΊΠΎΠΏΠΈΡ crontab Ρ ΠΏΠΎΠΌΠΎΡΡΡ
crontab -l > backup.txtΠΏΠ΅ΡΠ΅Π΄ Π»ΡΠ±ΡΠΌ ΡΠ΅Π°Π½ΡΠΎΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. - ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
flockΠ΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π·Π°Π΄Π°Π½ΠΈΠΉ. - Π ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
systemd ΠΏΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅
journalctl -u cron, Π° Π½Π΅ ΠΏΠΎΠ»Π°Π³Π°ΠΉΡΠ΅ΡΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π°/var/log/syslog. - ΠΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅ Π½ΠΎΠ²ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΡΠ΅ΡΡΠ΅ΡΠ° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ cron ΠΏΠ΅ΡΠ΅Π΄ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΠ΅ΠΌ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Π΅.
- Π£ΡΠΈΡΡΠ²Π°ΠΉΡΠ΅ UTC ΠΈ ΠΌΠ΅ΡΡΠ½ΡΠΉ ΡΠ°ΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΡΡ Π½Π° ΠΎΠ±Π»Π°ΡΠ½ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°Ρ ΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°Ρ VPS Π₯ΠΎΡΡΠΈΠ½Π³Π°.
- ΠΠ»Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² Email Π₯ΠΎΡΡΠΈΠ½Π³Π° ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ, Π³Π΄Π΅ Π·Π°Π΄Π°Π½ΠΈΡ ΡΠ²Π»ΡΡΡΡΡ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½ΡΠΌΠΈ, Π²Π½Π΅Π΄ΡΠΈΡΠ΅ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΈΠ½Π³ΠΈ healthcheck) Π΄Π»Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠ»ΡΠ°Π»ΠΈΠ²ΡΡ ΡΠ±ΠΎΠ΅Π² cron.
FAQ
ΠΠ°ΠΊ Π²ΡΠ²Π΅ΡΡΠΈ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ cron-Π·Π°Π΄Π°Π½ΠΈΠΉ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π° Linux-ΡΠ΅ΡΠ²Π΅ΡΠ΅?
ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΈΡΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎ /etc/passwd ΠΈ Π²ΡΠ·ΠΎΠ²ΠΈΡΠ΅ sudo crontab -l -u <user> Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ, ΠΏΠΎΠ΄Π°Π²Π»ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Β«no crontabΒ» Ρ ΠΏΠΎΠΌΠΎΡΡΡ 2>/dev/null. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ /etc/crontab, /etc/cron.d/ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ systemctl list-timers --all Π΄Π»Ρ Π·Π°Ρ
Π²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ
Π·Π°Π΄Π°Π½ΠΈΠΉ ΠΈ Π·Π°Π΄Π°Π½ΠΈΠΉ, ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ
systemd.
ΠΠΎΡΠ΅ΠΌΡ crontab -l Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, Ρ
ΠΎΡΡ Π·Π°Π΄Π°Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ?
ΠΠ°Π΄Π°Π½ΠΈΡ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² /etc/crontab, ΡΠ°ΠΉΠ»Π΅ Π²Π½ΡΡΡΠΈ /etc/cron.d/ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΡΠ°ΠΉΠΌΠ΅ΡΡ systemd β Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π½ΠΈΡ
Π½Π΅ Π²ΠΈΠ΄Π½ΠΎ ΡΠ΅ΡΠ΅Π· crontab -l. ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π»ΠΈΡΠ½ΡΠΉ crontab Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Ρ
ΡΠ°Π½ΡΡΠΈΠΉΡΡ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΡΠΏΡΠ»Π°.
Π ΡΡΠΌ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ /etc/crontab ΠΈ /etc/cron.d/?
ΠΠ±Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ ΡΠ΅ΡΡΠΈΠΏΠΎΠ»ΡΠ½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ (Π²ΠΊΠ»ΡΡΠ°Ρ ΠΏΠΎΠ»Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ) ΠΈ ΡΠΈΡΠ°ΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌ Π΄Π΅ΠΌΠΎΠ½ΠΎΠΌ cron. /etc/crontab β ΡΡΠΎ Π΅Π΄ΠΈΠ½ΡΠΉ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠ», ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΉ Π΄Π»Ρ ΡΡΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. /etc/cron.d/ β ΡΡΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ drop-in, ΠΊΡΠ΄Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΈΠ»ΠΈ ΡΠ΅ΡΠ²ΠΈΡΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π·Π°Π΄Π°Π½ΠΈΠΉ, ΡΠΎΡ
ΡΠ°Π½ΡΡ ΠΈΡ
ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΠΈ ΡΠΏΡΠΎΡΠ°Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠ΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅.
ΠΠ°ΠΊ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ Π·Π°ΠΏΡΡΠΊ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠ΅ΡΠ΅ΠΊΡΡΠ²Π°ΡΡΠΈΡ ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² cron-Π·Π°Π΄Π°Π½ΠΈΡ?
ΠΠ±Π΅ΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ flock -n /tmp/lockfile.lock Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠ΅ΠΉ ΡΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ. ΠΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π²ΡΡ Π΅ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ, Π½ΠΎΠ²ΡΠΉ Π²ΡΠ·ΠΎΠ² Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ Π±Π΅Π· Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Ρ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΈΡ Π·Π° ΡΠ΅ΡΡΡΡΡ ΠΈ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
.
ΠΠ΄Π΅ Ρ ΡΠ°Π½ΡΡΡΡ ΠΆΡΡΠ½Π°Π»Ρ cron-Π·Π°Π΄Π°Π½ΠΈΠΉ ΠΈ ΠΊΠ°ΠΊ ΠΎΡΠ»Π°Π΄ΠΈΡΡ Π·Π°Π΄Π°Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ?
Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠΈΡΡΠ΅ΠΌ cron Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ Π² /var/log/syslog (ΡΠΈΠ»ΡΡΡΡΠΉΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ grep CRON) ΠΈΠ»ΠΈ ΡΠ΅ΡΠ΅Π· journald (journalctl -u cron). ΠΠ»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ >> /tmp/debug.log 2>&1 ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π·Π°Π΄Π°Π½ΠΈΡ Π΄Π»Ρ Π·Π°Ρ
Π²Π°ΡΠ° Π²ΡΠ΅Π³ΠΎ Π²ΡΠ²ΠΎΠ΄Π°, ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΠΊΡΠΈΠΏΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌ, ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΠ΅, ΡΡΠΎ Π΄Π΅ΠΌΠΎΠ½ Π·Π°ΠΏΡΡΠ΅Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ systemctl status cron, ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ.
Π½Π° Π²ΡΠ΅Ρ
Ρ
ΠΎΡΡΠΈΠ½Π³ΠΎΠ²ΡΡ
ΡΡΠ»ΡΠ³Π°Ρ