Linux create cron job

Create cron job or schedule jobs using bash scripts in Linux or Unix

Table of Contents

In my last article I had shared the steps to downgrade rpm to a specific old version in Linux and Unix. How to update crond using a shell script? Setting up cron job using command line bash shell script in Linux? Create cron job automatically for root user and normal user using script in Linux. Schedule cron job via crontab using shell script with examples.

Steps to create cron job manually

Step 1: Give crontab privilege

Before we start we need to give crontab privilege to the respective user. For the sake of this article I will create some sample cron job for root and deepak user, so I will assign permission for these two users.

Append the username to /etc/cron.allow

Step 2: Create cron file

Create a cron file for root user

Create a cron file for deepak user

Step 3: Schedule your job

I will create some dummy jobs. To give a demonstration I will schedule a job to clear temporary files every midnight for both the user

Step 4: Validate the cron job content

Here you can use -u to define the username for which you wish to perform the cron action/

So our cron jobs are updated successfully for both root and deepak user.

Script to create cron job using bash shell script

Let us put them all together in a script

Here I have shared two methods to update cron job using a shell script for root and deepak user.

You can validate the changes after executing your script

List the cron jobs

So all is working as expected.

Lastly I hope the steps from the article to create cron job using shell script on Linux was helpful. So, let me know your suggestions and feedback using the comment section.

Didn’t find what you were looking for? Perform a quick search across GoLinuxCloud

If my articles on GoLinuxCloud has helped you, kindly consider buying me a coffee as a token of appreciation.

For any other feedbacks or questions you can either use the comments section or contact me form.

Thank You for your support!!

4 thoughts on “Create cron job or schedule jobs using bash scripts in Linux or Unix”

Hi , Thansk for this info. My python script is working fine while running manually. But it is not working properly though crontab. Means it stuck at halfway of execution.
Any suggetion?

halfway of execution? How are you executing your python script? halfway where? Please share more details

Hi,
Very useful article, I have different query. Currently I directly ssh and edit the cronjobs using `crontab -e` there are 10-15 different jobs over there. I want to manage these jobs via git because there are other team users who also has access and don’t want to mess up with jobs. So can you suggest what is the best way to manage jobs via git and get auto add/updated in crontab.

I think the shell script I shared here does exactly that, it checks for existing jobs and adds new one (as many as you want)

Источник

Cron Jobs — пособие для начинающих

Cron — один из часто используемых инструментов для Unix-систем. Его используют для планирования выполнения команд на определённое время. Эти «отложенные» команды или задания принято называть «Cron Jobs». Такой инструмент отлично подходит для регулярных бэкапов, мониторинга дискового пространства, удаления файлов (например, логов) и много чего ещё. В этой статье будет рассказано о работе с Cron на Linux.

Введение

Шаблон задания для Cron выглядит примерно так:

Вот иллюстрация этого же шаблона, которую можно сохранить себе:

Звёздочками обозначены конкретные блоки времени.

Для отображения содержимого crontab-файла текущего пользователя используйте команду:

Для редактирования заданий пользователя есть команда:

Если эта команда выполняется в первый раз, вам предложат выбрать редактор для Cron:

Выбирайте на своё усмотрение. Вот так изначально выглядит crontab-файл:

В этом файле как раз нужно перечислять одну за другой все команды.

Чтобы изменить crontab-файл другого пользователя (например, ostechnix):

Ниже приведены несколько примеров cron-заданий:

  1. Чтобы выполнять команду каждую минуту, задание должно быть такое:
  2. Похожее задание, только команда будет вызываться каждые пять минут:
  3. Вызывать команду 4 раза в час (каждые 15 минут):
  4. Чтобы выполнить команду каждый час в 30 минут, пишем:

Т. е. команда будет выполняться не каждые 30 минут, а тогда, когда значение минут будет равно 30 (например, 10:30, 11:30, 12:30 и т. д.).

  • Значения времени можно комбинировать, перечислив их через запятую. Следующий код будет выполнять команду три раза в час: в 0, 5 и 10 минут.
  • Выполнять команду каждый час будет следующее задание:
  • Выполнение команды каждые два часа:
  • Чтобы выполнять команду каждый день (в 00:00):
  • Выполнение команды каждый день в 03:00:
  • Выполнение команды каждое воскресенье (sunday):
  • Другой вариант задания, которое будет выполнять команду каждое воскресенье (естественно, тоже в 00:00):
  • Выполнение команды каждый день с понедельника по пятницу:
  • Следующее задание будет выполнять команду каждый месяц, 1-го числа в 00:00:
  • Выполнять команду в 16:15 каждого первого числа месяца будет это задание:
  • Выполнение команды каждые три месяца:
  • Выполнение команды в строго определённое время и месяц:
  • Задание будет вызывать команду в начале каждого полугодия (в 00:00 1-го дня):
  • Выполнение команды каждый год 1-го января в 00:00:
  • Ещё существуют готовые задания:

    • @reboot — одиночное выполнение команды при загрузке;
    • @yearly — раз в год;
    • @annually — тоже раз в год;
    • @monthly — раз в месяц;
    • @weekly — один раз в неделю;
    • @daily — раз в день;
    • @midnight — тоже раз в день;
    • @hourly — раз в час.

    Чтобы выполнять команду каждый раз после перезапуска сервера, используйте это задание:

    Команда для очистки всех заданий текущего пользователя:

    Чтобы узнать о подробностях, есть команда:

    Вышеперечисленного уже должно хватить для базовой работы с Cron и составления заданий.

    Синтаксис crontab-генераторов

    Процесс написания заданий сильно упрощают веб-инструменты. Они не требуют знаний синтаксиса Cron, потому что у них графический интерфейс, а задания генерируются в соответствии с вводимыми данными. Сайт генерирует задание, которое можно будет просто скопировать и вставить в crontab-файл.

    Crontab.guru

    crontab.guru — отличный сайт, чтобы изучить различные примеры cron-заданий. Просто введите данные и сайт самостоятельно сгенерирует конечное задание.

    Сайт Crontag buru

    На сайте есть разделы, посвящённые примерам и советам.

    Crontag Generator

    crontab-generator.org — ещё один сайт, который помогает быстро сгенерировать crotab-выражения. Принцип такой же: нужно ввести все необходимые данные в формы и нажать кнопку «Generate Crontab Line» внизу страницы.

    Сайт Crontab Generator

    Вот такое конечное выражение вы увидете на сайте:

    Помимо этого, есть веб-инструмент «Crontab UI», который обеспечивает не только простоту создания crontab-заданий, но и безопасность. Вот статья, посвящённая этому инструменту.

    Хинт для программистов: если зарегистрируетесь на соревнования Huawei Cup, то бесплатно получите доступ к онлайн-школе для участников. Можно прокачаться по разным навыкам и выиграть призы в самом соревновании.

    Перейти к регистрации

    Источник

    How to Create and Manage Cron Jobs on Linux

    Cron is one of Linux’s most useful tools and a developer favorite because it allows you to run automated commands at specific periods, dates, and intervals using both general-purpose and task-specific scripts. Given that description, you can imagine how system admins use it to automate backup tasks, directory cleaning, notifications, etc.

    Cron jobs run in the background and constantly check the /etc/crontab file, and the /etc/cron.*/ and /var/spool/cron/ directories. The cron files are not supposed to be edited directly and each user has a unique crontab.

    How then are you supposed to create and edit cron jobs? With crontab commands. The crontab is the method you use to create, edit, install, uninstall, and list cron jobs.

    The command for creating and editing cron jobs is the same and simple. And what’s even cooler is that you don’t need to restart cron after creating new files or editing existing ones.

    Cron Syntax

    Just as it is with any language, working with cron is a lot easier when you understand its syntax and there are 2 formats you should know:

    Explanation of above cron syntax:

    • A: Minutes range: 0 – 59
    • B: Hours range: 0 – 23
    • C: Days range: 0 – 31
    • D: Months range: 0 – 12
    • E: Days of the week range: 0 – 7. Starting from Monday, 0 or 7 represents Sunday
    • USERNAME: replace this with your username
    • /path/to/command – The name of the script or command you want to schedule

    That’s not all. Cron uses 3 operator symbols which allow you to specify multiple values in a field:

    1. Asterisk (*) : specifies all possible values for a field
    2. The comma (,) : specifies a list of values
    3. Dash (-) : specifies a range of values
    4. Separator (/) : specifies a step value

    Now that you know Cron’s syntax and operators, let’s see some cron examples.

    Cron Job Examples

    The first step to running cron commands is installing your crontab with the command:

    Run /root/backup.sh at 3 am every day:

    Run script.sh at 4:30 pm on the second of every month:

    Run /scripts/phpscript.php at 10 pm during the week:

    Run perlscript.pl at 23 minutes after midnight, 2am and 4am, everyday:

    Run Linux command at 04:05 every Sunday:

    Cron Options

    Delete all crontab jobs.

    Delete Cron job for a specific user.

    Strings in Crontab

    Strings are among the developer’s favorite things because they help to save time by eliminating repetitive writing. Cron has specific strings you can use to create commands quicker:

    1. @hourly : Run once every hour i.e. “0 * * * *
    2. @midnight : Run once every day i.e. “0 0 * * *
    3. @daily : same as midnight
    4. @weekly : Run once every week, i.e. “0 0 * * 0
    5. @monthly : Run once every month i.e. “0 0 1 * *
    6. @annually : Run once every year i.e. “0 0 1 1 *
    7. @yearly : same as @annually
    8. @reboot : Run once at every startup

    For example, this is how to backup your system every day:

    At this point, you have all you need to create and manage system tasks using Cron. You can now begin to set up and maintain several environments using scheduled commands.

    How much of a Cron user are you? And are there any details you can contribute to the article? The discussion box is below.

    When you understand enough about how Crontab works you can use these nifty Crontab generator utilities to generate crontab lines for free.

    Also, you can read Ubuntu’s article on how to use Cron here. It has resources that you might find useful.

    If You Appreciate What We Do Here On TecMint, You Should Consider:

    TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.

    If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.

    We are thankful for your never ending support.

    Источник

    Cron в Linux: история, использование и устройство

    Классик писал, что счастливые часов не наблюдают. В те дикие времена ещё не было ни программистов, ни Unix, но в наши дни программисты знают твёрдо: вместо них за временем проследит cron.

    Утилиты командной строки для меня одновременно слабость и рутина. sed, awk, wc, cut и другие старые программы запускаются скриптами на наших серверах ежедневно. Многие из них оформлены в виде задач для cron, планировщика родом из 70-х.

    Я долго пользовался cron поверхностно, не вникая в детали, но однажды, столкнувшись с ошибкой при запуске скрипта, решил разобраться основательно. Так появилась эта статья, при написании которой я ознакомился с POSIX crontab, основными вариантами cron в популярных дистрибутивах Linux и устройством некоторых из них.

    Используете Linux и запускаете задачи в cron? Вам интересна архитектура системных приложений в Unix? Тогда нам по пути!

    Содержание

    Происхождение видов

    Периодическое выполнение пользовательских или системных программ — очевидная необходимость во всех операционных системах. Поэтому потребность в сервисах, позволяющих централизованно планировать и выполнять задачи, программисты осознали очень давно.

    Unix-подобные операционные системы ведут свою родословную от Version 7 Unix, разработанной в 70-х годах прошлого века в Bell Labs в том числе и знаменитым Кеном Томпсоном (англ. Ken Thompson). Вместе c Version 7 Unix поставлялся и cron, сервис для регулярного выполнения задач суперпользователя.

    Типичный современный cron — несложная программа, но алгоритм работы оригинального варианта был ещё проще: сервис просыпался раз в минуту, читал табличку с задачами из единственного файл (/etc/lib/crontab) и выполнял для суперпользователя те задачи, которые следовало выполнить в текущую минуту.

    Впоследствии усовершенствованные варианты простого и полезного сервиса поставлялись со всеми Unix-подобными операционными системами.

    Обобщённые описания формата crontab и базовых принципов работы утилиты в 1992 году были включены в главный стандарт Unix-подобных операционных систем — POSIX — и таким образом cron из стандарта де-факто стал стандартом де-юре.

    В 1987 году Пол Викси (англ. Paul Vixie), опросив пользователей Unix на предмет пожеланий к cron, выпустил ещё одну версию демона, исправляющую некоторые проблемы традиционных cron и расширяющую синтаксис файлов-таблиц.

    К третьей версии Vixie cron стал отвечать требованиям POSIX, к тому же у программы была либеральная лицензия, вернее не было вообще никакой лицензии, если не считать пожеланий в README: гарантий автор не даёт, имя автора удалять нельзя, а продавать программу можно только вместе с исходным кодом. Эти требования оказались совместимы с принципами набиравшего в те годы популярность свободного ПО, поэтому некоторые ключевые из появившихся в начале 90-х дистрибутивов Linux взяли Vixie cron в качестве системного и развивают его до сих пор.

    В частности, Red Hat и SUSE развивают форк Vixie cron — cronie, а Debian и Ubuntu используют оригинальное издание Vixie cron со множеством патчей.

    Давайте для начала познакомимся с описанной в POSIX пользовательской утилитой crontab, после чего разберём расширения синтаксиса, представленные в Vixie cron, и использование вариаций Vixie cron в популярных дистрибутивах Linux. И, наконец, вишенка на торте — разбор устройства демона cron.

    POSIX crontab

    Если оригинальный cron всегда работал для суперпользователя, то современные планировщики чаще имеют дело с задачами обычных пользователей, что более безопасно и удобно.

    Сron-ы поставляются комплектом из двух программ: постоянно работающего демона cron и доступной пользователям утилиты crontab. Последняя позволяет редактировать таблицы задач, специфичные для каждого пользователя в системе, демон же запускает задачи из пользовательских и системной таблиц.

    В стандарте POSIX никак не описывается поведение демона и формализована только пользовательская программа crontab. Существование механизмов запуска пользовательских задач, конечно, подразумевается, но не описано подробно.

    Вызовом утилиты crontab можно сделать четыре вещи: отредактировать пользовательскую таблицу задач в редакторе, загрузить таблицу из файла, показать текущую таблицу задач и очистить таблицу задач. Примеры работы утилиты crontab:

    При вызове crontab -e будет использоваться редактор, указанный в стандартной переменной окружения EDITOR .

    Сами задачи описаны в следующем формате:

    Первые пять полей записей: минуты [1..60], часы [0..23], дни месяца [1..31], месяцы [1..12], дни недели [0..6], где 0 — воскресенье. Последнее, шестое, поле — строка, которая будет выполнена стандартным интерпретатором команд.

    В первых пяти полях значения можно перечислять через запятую:

    Или через дефис:

    Доступ пользователей к планированию задач регулируется в POSIX файлам cron.allow и cron.deny в которых перечисляются, соответственно, пользователи с доступом к crontab и пользователи без доступа к программе. Расположение этих файлов стандарт никак не регламентирует.

    Запускаемым программам, согласно стандарту, должны передаваться по меньшей мере четыре переменные окружения:

    1. HOME — домашняя директория пользователя.
    2. LOGNAME — логин пользователя.
    3. PATH — путь, по которому можно найти стандартные утилиты системы.
    4. SHELL — путь к использованному командному интерпретатору.

    Примечательно, что POSIX ничего не говорит о том, откуда берутся значения для этих переменных.

    Хит продаж — Vixie cron 3.0pl1

    Общий предок популярных вариантов cron — Vixie cron 3.0pl1, представленный в рассылке comp.sources.unix в 1992 году. Основные возможности этой версии мы и рассмотрим подробнее.

    Vixie cron поставляется в двух программах (cron и crontab). Как обычно, демон отвечает за чтение и запуск задач из системной таблицы задач и таблиц задач отдельных пользователей, а утилита crontab — за редактирование пользовательских таблиц.

    Таблица задач и файлы конфигурации

    Таблица задач суперпользователя расположена в /etc/crontab. Синтаксис системной таблицы соответствует синтаксису Vixie cron с поправкой на то, что в ней шестой колонкой указывается имя пользователя, от лица которого запускается задача:

    Таблицы задач обычных пользователей располагаются в /var/cron/tabs/username и используют общий синтаксис. При запуске утилиты crontab от имени пользователя редактируются именно эти файлы.

    Управление списками пользователей, имеющих доступ к crontab, происходит в файлах /var/cron/allow и /var/cron/deny, куда достаточно внести имя пользователя отдельной строкой.

    Расширенный синтаксис

    По сравнению с POSIX crontab решение Пола Викси содержит несколько очень полезных модификаций в синтаксисе таблиц задач утилиты.

    Стал доступен новый синтаксис таблиц: например, можно указывать дни недели или месяцы поимённо (Mon, Tue и так далее):

    Можно указывать шаг, через который запускаются задачи:

    Шаги и интервалы можно смешивать:

    Поддерживаются интуитивные альтернативы обычному синтаксису (reboot, yearly, annually, monthly, weekly, daily, midnight, hourly):

    Среда выполнения задач

    Vixie cron позволяет менять окружение запускаемых приложений.

    Переменные окружения USER, LOGNAME и HOME не просто предоставляются демоном, а берутся из файла passwd. Переменная PATH получает значение «/usr/bin:/bin», а SHELL — «/bin/sh». Значения всех переменных, кроме LOGNAME, можно изменить в таблицах пользователей.

    Некоторые переменные окружения (прежде всего SHELL и HOME) используются самим cron для запуска задачи. Вот как может выглядеть использование bash вместо стандартного sh для запуска пользовательских задач:

    В конечном итоге все определённые в таблице переменные окружения (используемые cron или необходимые процессу) будут переданы запущенной задаче.

    Для редактирования файлов утилитой crontab используется редактор, указанный в переменной окружения VISUAL или EDITOR. Если в среде, где был запущен crontab, эти переменные не определены, то используется «/usr/ucb/vi» (ucb — это, вероятно, University of California, Berkeley).

    cron в Debian и Ubuntu

    Разработчики Debian и производных дистрибутивов выпустили сильно модифицированную версию версию Vixie cron 3.0pl1. Отличий в синтаксисе файлов-таблиц нет, для пользователей это тот же самый Vixie cron. Крупнейшие новые возможности: поддержка syslog, SELinux и PAM.

    Из менее заметных, но осязаемых изменений — расположение конфигурационных файлов и таблиц задач.

    Пользовательские таблицы в Debian располагаются в директории /var/spool/cron/crontabs, системная таблица всё там же — в /etc/crontab. Специфичные для пакетов Debian таблицы задач помещаются в /etc/cron.d, откуда демон cron их автоматически считывает. Управление доступом пользователей регулируется файлами /etc/cron.allow и /etc/cron.deny.

    В качестве командной оболочки по умолчанию по-прежнему используется /bin/sh, в роли которого в Debian выступает небольшой POSIX-совместимый шелл dash, запущенный без чтения какой-либо конфигурации (в неинтерактивном режиме).

    Сам cron в последних версиях Debian запускается через systemd, а конфигурацию запуска можно посмотреть в /lib/systemd/system/cron.service. Ничего особенного в конфигурации сервиса нет, любое более тонкое управление задачами возможно осуществить через переменные окружения, объявленные прямо в crontab каждого из пользователей.

    cronie в RedHat, Fedora и CentOS

    cronie — форк Vixie cron версии 4.1. Как и в Debian, синтаксис не менялся, но добавлена поддержка PAM и SELinux, работы в кластере, слежения за файлами при помощи inotify и других возможностей.

    Конфигурация по умолчанию находится в обычных местах: системная таблица — в /etc/crontab, пакеты помещают свои таблицы в /etc/cron.d, пользовательские таблицы попадают в /var/spool/cron/crontabs.

    Демон запускается под управлением systemd, конфигурация сервиса — /lib/systemd/system/crond.service.

    В Red Hat-подобных дистрибутивах при запуске по умолчанию используется /bin/sh, в роли которого выступает стандартный bash. Надо заметить, что при запуске задач cron через /bin/sh командная оболочка bash запускается в POSIX-совместимом режиме и не читает никакой дополнительной конфигурации, работая в неинтерактивном режиме.

    cronie в SLES и openSUSE

    Немецкий дистрибутив SLES и его дериватив openSUSE используют всё тот же cronie. Демон здесь тоже запускается под systemd, конфигурация сервиса лежит в /usr/lib/systemd/system/cron.service. Конфигурация: /etc/crontab, /etc/cron.d, /var/spool/cron/tabs. В качестве /bin/sh выступает тот же самый bash, запущенный в POSIX-совместимом неинтерактивном режиме.

    Устройство Vixie cron

    Современные потомки cron по сравнению с Vixie cron не изменились радикально, но всё же обзавелись новыми возможностями, не требующимися для понимания принципов работы программы. Многие из этих расширений оформлены неаккуратно и путают код. Оригинальный же исходный код cron в исполнении Пола Викси читать одно удовольствие.

    Поэтому разбор устройства cron я решил провести на примере общей для обеих ветвей развития cron программы — Vixie cron 3.0pl1. Примеры я упрощу, убрав усложняющие чтение ifdef-ы и опустив второстепенные детали.

    Работу демона можно разделить на несколько этапов:

    1. Инициализация программы.
    2. Сбор и обновление списка задач для запуска.
    3. Работа главного цикла cron.
    4. Запуск задачи.

    Разберём их по порядку.

    Инициализация

    При запуске после проверки аргументов процесса cron устанавливает обработчики сигналов SIGCHLD и SIGHUP. Первый вносит в лог запись о завершении работы дочернего процесса, второй — закрывает файловый дескриптор файла-лога:

    Демон cron в системе всегда работает один, только в роли суперпользователя и из главной директории cron. Следующие вызовы создают файл-лок с PID-ом процесса-демона, убеждаются, что пользователь правильный и меняют текущую директорию на главную:

    Выставляется путь по умолчанию, который будет использоваться при запуске процессов:

    Дальше процесс «демонизируется»: создаёт дочернюю копию процесса вызовом fork и новую сессию в дочернем процессе (вызов setsid). В родительском процессе больше надобности нет — и он завершает работу:

    Завершение родительского процесса высвобождает лок на файле-локе. Кроме того, требуется обновить PID в файле на дочерний. После этого заполняется база задач:

    Дальше cron переходит к главному циклу работы. Но перед этим стоит взглянуть на загрузку списка задач.

    Сбор и обновление списка задач

    За загрузку списка задач отвечает функция load_database. Она проверяет главный системный crontab и директорию с пользовательскими файлами. Если файлы и директория не менялись, то список задач не перечитывается. В противном случае начинает формироваться новый список задач.

    Загрузка системного файла со специальными именами файла и таблицы:

    Загрузка пользовательских таблиц в цикле:

    После чего старая база данных подменяется новой.

    В примерах выше вызов функции process_crontab убеждается в существовании пользователя, соответствующего имени файла таблицы (если только это не суперпользователь), после чего вызывает load_user. Последняя уже читает сам файл построчно:

    Здесь либо выставляется переменная окружения (строки вида VAR=value) функциями load_env / env_set, либо читается описание задачи (* * * * * /path/to/exec) функцией load_entry.

    Сущность entry, которую возвращает load_entry, — это и есть наша задача, помещаемая в общий список задач. В самой функции проводится многословный разбор формата времени, нас же больше интересует формирование переменных окружения и параметров запуска задачи:

    С актуальным списком задач и работает главный цикл.

    Главный цикл

    Оригинальный cron из Version 7 Unix работал совсем просто: в цикле перечитывал конфигурацию, запускал суперпользователем задачи текущей минуты и спал до начала следующей минуты. Этот простой подход на старых машинах требовал слишком много ресурсов.

    В SysV была предложена альтернативная версия, в которой демон засыпал либо до ближайшей минуты, для которой определена задача, либо на 30 минут. Ресурсов на перечитывание конфигурации и проверку задач в таком режиме потреблялось меньше, но быстро обновлять список задач стало неудобно.

    Vixie cron вернулся к проверке списков задач раз в минуту, благо к концу 80-х ресурсов на стандартных Unix-машинах стало значительно больше:

    Непосредственно выполнением задач занимается функция cron_sleep, вызывающая функции job_runqueue (перебор и запуск задач) и do_command (запуск каждой отдельной задачи). Последнюю функцию стоит разобрать подробнее.

    Запуск задачи

    Функция do_command исполнена в хорошем Unix-стиле, то есть для асинхронного выполнения задачи она делает fork. Родительский процесс продолжает запуск задач, дочерний — занимается подготовкой процесса задачи:

    В child_process довольно много логики: она принимает стандартные потоки вывода и ошибок на себя, чтобы потом переслать на почту (если в таблице задач указана переменная окружения MAILTO), и, наконец, ждёт завершения работы основного процесса задачи.

    Процесс задачи формируется еще одним fork:

    Вот, в общем-то, и весь cron. Какие-то интересные детали, например учёт удалённых пользователей, я опустил, но главное изложил.

    Послесловие

    Сron — на удивление простая и полезная программа, выполненная в лучших традициях мира Unix. Она не делает ничего лишнего, но свою работу выполняет замечательно на протяжении уже нескольких десятилетий. Ознакомление с кодом той версии, что поставляется с Ubuntu, заняло не больше часа, а удовольствия я получил массу! Надеюсь, я смог поделиться им с вами.

    Не знаю, как вам, но мне немного грустно осознавать, что современное программирование с его склонностью к переусложнению и переабстрагированию уже давно не располагает к подобной простоте.

    Существует множество современных альтернатив cron: systemd-timers позволяют организовать сложные системы с зависимостями, в fcron можно гибче регулировать потребление ресурсов задачами. Но лично мне всегда хватало простейших crontab.

    Словом, любите Unix, используйте простые программы и не забывайте читать маны для вашей платформы!

    Источник

    Читайте также:  Task host window как отключить windows 10
    Оцените статью