|
Лукаин той публикува Преди време отличен урок за 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, за да автоматизираме някои процеси. Това е полезно например за автоматизиране на актуализацията на система или добра система за архивиране.
Какво представлява 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 потребител
Този инструмент, както и много други, може да се види по-задълбочено и по-подробно в: