Cron & crontab, обяснено

Лукаин той публикува Преди време отличен урок за cron и crontab което мисля, че си струва да споделите. Cron е нещо като еквивалент на Scheduled Tasks в Windows, само че се обработва от терминала. Тези, които предпочитат визуален интерфейс, за да постигнат същата цел, могат да видят това друг елемент.

Какво е cron?

Името cron идва от гръцкото chronos, което означава „време“. В операционната система Unix cron е обикновен мениджър на фонови процеси (демон), който изпълнява процеси или скриптове на равни интервали (например всяка минута, ден, седмица или месец). Процесите, които трябва да бъдат изпълнени, и времето, в което те трябва да бъдат изпълнени, са посочени във файла crontab.

Комо произведения

Демонът на cron започва от /etc/rc.d/ o /etc/init.d в зависимост от разпределението. Cron работи във фонов режим, проверява таблицата на задачите crontab всяка минута / И т.н. / кронтаб о EN / var / макара / cron в търсене на задачи, които трябва да бъдат изпълнени. Като потребител можем да добавяме команди или скриптове със задачи към cron, за да автоматизираме някои процеси. Това е полезно например за автоматизиране на актуализацията на система или добра система за архивиране.

Свързана статия:
Урок: Инсталирайте пакетите .tar.gz и .tar.bz2

Какво представлява Crontab?

Crontab е прост текстов файл, който съхранява списък с команди, които трябва да бъдат изпълнени в момент, определен от потребителя. Crontab ще провери датата и часа, когато трябва да се изпълни скриптът или командата, разрешенията за изпълнение и ще го направи във фонов режим. Всеки потребител може да има свой собствен crontab файл, всъщност / И т.н. / кронтаб приема се, че това е файлът crontab на root потребителя, когато нормалните потребители (и дори root) искат да генерират свой собствен crontab файл, тогава ще използваме командата crontab.

Crontab е най-лесният начин за управление на cron задачи в многопотребителски системи, като обикновен потребител на системата или като потребител на root.

Използване на crontab

Започваме с прост пример.

Ще автоматизираме актуализацията на дадена система, за да премахнем досадното "Винаги трябва да актуализирам и това не ми харесва!"

как да
Свързана статия:
Команди за познаване на системата (идентифициране на хардуер и някои софтуерни конфигурации)

На първо място ще направим сценарий. Този скрипт ще бъде извикан от cron и ще съдържа всички инструкции, които искаме да направи, затова е необходимо да го тествате в няколко случая и по няколко начина, преди да го включите в cron, прост скрипт за актуализация като този:

#! / bin / bash # пример за актуализация на скрипт # изберете вашата дистрибуция # debian-ubuntu # apt-get update & apt-get -y upgrade #fedora #yum -y update #Arch #pacman --noconfirm -Syu

Премахнете # от вашата дистрибуционна линия. В случай, че е Ubuntu / Debian, той започва с apt-get.

Записваме скрипта като update.sh (напр. Скриптове в дома ви). Променяме разрешенията за изпълнение на споменатия скрипт с:

chmod a + x ~ / scripts / update.sh

Изпълняваме скрипта няколко пъти, за да проверим дали всичко работи гладко, модифицираме необходимото (не трябва да съдържа грешки, в противен случай cron ще повтаря грешка само отново и отново). Сега да добавим задачата към нашия crontab.

Добавете задачи към crontab

Изпълняваме изданието на crontab с crontab -e, в някои дистрибуции (като Ubuntu) ни дава възможност да изберем текстовия редактор, който искаме, останалото ни остава с vi. Файлът crontab ще изглежда по подобен начин.

# mh dom mon dow потребителска команда

когато:

  • m съответства на минутата, в която ще бъде изпълнен скриптът, стойността варира от 0 до 59
  • h точното време, обработва се 24-часовият формат, стойностите варират от 0 до 23, като 0 е 12:00 полунощ.
  • подарък се отнася до деня на месеца, например можете да посочите 15, ако искате да стартирате на всеки 15 дни
  • Dow означава ден от седмицата, той може да бъде цифров (0 до 7, където 0 и 7 са неделя) или първите 3 букви на деня на английски език: понеделник, вторник, сряда, четвъртък, петък, събота, слънце.
  • потребител дефинира потребителя, който ще изпълни командата, тя може да бъде root или различен потребител, стига да има разрешения за изпълнение на скрипта.
  • команда се отнася до командата или абсолютния път на скрипта, който трябва да бъде изпълнен, пример: /home/usuario/scripts/update.sh, ако извика скрипт, той трябва да бъде изпълним

За да бъдат ясни, обяснени са няколко примера за cron задачи:

15 10 * * * потребител /home/user/scripts/update.sh

Той ще стартира скрипта update.sh в 10:15 часа всеки ден

15 22 * * * потребител /home/user/scripts/update.sh

Ще стартира скрипта update.sh в 10:15 всеки ден

00 10 * * 0 root apt-get -y update Корен потребител

Ще се актуализира всяка неделя от 10:00 часа

45 10 * * актуализация apt-get -y sun root

Потребителят на root ще стартира актуализация всяка неделя (неделя) в 10:45 сутринта

30 7 20 11 * потребител /home/usuario/scripts/update.sh

На 20 ноември в 7:30 потребителят ще стартира скрипта

30 7 11 11 потребител на слънце /home/usuario/scripts/pastel_con_velitas.sh

На 11 ноември в 7:30 сутринта, а това е неделя, потребителят ще отпразнува своя сисадмин (тоест аз)

01 * * * * потребител /home/usuario/scripts/molestorecordatorio.sh

Досадно напомняне всяка минута на всеки час всеки ден (НЕ се препоръчва).

С тях все още може да се работи специални гами:

30 17 * * 1,2,3,4,5

В 5:30 следобед всеки ден от понеделник до петък.

00 12 1,15,28 * *

В 12 на обяд на първото, петнадесетото и 28-о число на всеки месец (идеално за ведомост)

Ако това е объркващо, crontab се справя специални низове за дефиниране на тези диапазони.

@reboot Стартирайте веднъж, при стартиране
@yearly работи само веднъж годишно: 0 0 1 1 *
@ ежегодно същото като @yearly
@monthly работи веднъж месечно, първия ден: 0 0 1 * *
@weekly Weekly първата минута от първия час на седмицата. 0 0 * * 0 ″.
@daily всеки ден, в 12:00 ч. 0 0 * * *
@ полунощ същото като @daily
@ на час в първата минута на всеки час: 0 * * * *

Използването му е много просто.

@hourly user /home/user/scripts/molestorecordatorio.sh @ ежемесечен потребител /home/user/scripts/backup.sh @daily root apt-get update && apt-get -y upgrade

Не на последно място:

Cron управление на работата

crontab файл

Заменете съществуващия crontab файл с дефиниран от потребителя файл

кронтаб -е

Редактирайте файла crontab на потребителя, всеки нов ред ще бъде нова задача crontab.

crontab -l

Избройте всички задачи на crontab на потребителя

crontab -d

Изтрийте crontab на потребителя

crontab -c реж

Определя директорията crontab на потребителя (това трябва да има разрешенията за писане и изпълнение на потребителя)

crontab -u потребител

префикс за обработка на crontab на друг потребител, примери:

$ sudo crontab -l -u root $ sudo crontab -e user2 #crontab -d -u потребител

Този инструмент, както и много други, може да се види по-задълбочено и по-подробно в:

Благодаря Lucain!