Linux crontab всех пользователей

Как получить список всех задач cron у всех пользователей в Linux ?

Вроде простая задача и вроде есть простое решение в виде:

Но решение неудобное и нужно всегда держать его в голове.
Давайте его усовершенствуем.

Исходные данные: Debian 8.9 (jessie)

Небольшой экскурс для тех кто не в курсе как вообще посмотреть список запланированных задач в планировщике cron в Linux:

Список задач у текущего пользователя:

Список задач у пользователя vasua:

Для вывод задач для всех пользователей очевидно нужно взять список пользователей в системе из /etc/passwd и сделать для каждого пользователя crontab -u USERNAME -l, то есть:

Недостаток этого решения очевиден:
1. Нужно всегда помнить эту команду.
2. Если у пользователя нет задач в планировщике то мы получим сообщение «no crontab for vasua» и таких сообщений может быть десятки если у вас много пользователей — это неудобно.
3. Вывод информации неудобно читать.

Но это не финишная прямая, а только начало, ведь опытный системный администратор знает, что кроме вывода списка заданий командой crontab -l -u USER есть еще задания планировщика в каталоге /etc/cron.d/ и это тоже нужно учитывать, потому что например панель хостинга ISPConfig сохраняет задания cron в каталоге /etc/cron.d/ с именами ispc_webXXX, где webXXX — это логин системного пользователя, например web30 и вывод crontab -l -u web30 нам скажет «no crontab for web30», а на самом деле в файле /etc/cron.d/ispc_web30 может быть такая картина:

Задачи в /etc/cron.d мы тоже учтем и покажем в решении ниже.

Итак, создадим функцию allcrontab в файле

/.bashrc для ввода информации в более удобном виде:

/.bashrc или перелогиниваемся и выполняем в консоле allcrontab и видим красивый вывод списка всех задач cron у всех пользователей и дополнительно вывод задач из /etc/cron.d:

Результат выполнения allcrontab

Так же опытный системный администратор знает, что существует anacron (anachronistic cron или асинхронный (анахроничный) cron) и его запуск и его задания тоже нужно учитывать, см. файл /etc/cron.d/anacron и /etc/anacrontab и каталоги /etc/cron.daily/, /etc/cron.hourly/, /etc/cron.monthly/ и /etc/cron.weekly/, но обсуждение anacron уже выходит за рамки этой статьи.

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

Источник

НАСТРОЙКА CRON

НАСТРОЙКА CRON

Введение

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

Читайте также:  Как записать диск с помощью dvd студия windows

Базовая настройка CRON

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

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

минута час день месяц день_недели /путь/к/исполняемому/файлу

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

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

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

Ниже приведены несколько примеров 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:
  • Ещё существуют готовые задания:

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

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

    Настройка cron для web программистов

    1. Добавляем в cron задачу, которая будет выполнятся каждую минуту.
    Набираем crontab -e и добавляем (будет выполняться под тем пользователем под кем вы зашли в SSH)

    */1 * * * * /usr/bin/php -q /server/cron/cron.php > /dev/null 2>&1

    сохраняемся (SHIFT+Z 2раза )
    Примечаие:
    */1 * * * * — означает что скрипт будет запускаться каждую минуту
    > /dev/null — означает отправку результатов, которые выдаст скрипт, в никуда.
    2>&1 — избавляет администратора сервера от писем, если скрипт закончит работу с ошибками

    2. для отправки на почту воспользуемся mutt (почтовый клиент)
    2.1. apt-get install mutt
    2.2. Набираем crontab -e и добавляем
    0 */1 * * * /usr/bin/php -q /server/cron/cron.php > /server/cron/cron.txt && mutt my@email.com -s cron-result Фактически, Cron — это сервис, как и большинство других сервисов Linux, он запускается при старте системы и работает в фоновом режиме. Его основная задача выполнять нужные процессы в нужное время. Существует несколько конфигурационных файлов, из которых он берет информацию о том что и когда нужно выполнять. Сервис открывает файл /etc/crontab (тут могут быть тоже прописаны задачи) и они не будут отображаться по команде crontab – l

    Так же существует anacron (anachronistic cron или асинхронный (анахроничный) cron) и его запуск и его задания тоже нужно учитывать, см. файл /etc/anacrontab и каталоги /etc/cron.daily/, /etc/cron.hourly/, /etc/cron.monthly/ и /etc/cron.weekly/

    Читайте также:  Как поставить windows 10 пиратку

    Часто, в современных дистрибутивах там прописан запуск утилиты run-parts, которая запускает нужные скрипты из следующих папок:

    § /etc/cron.minutely — каждую минуту;

    § /etc/cron.hourly — каждый час; ( cat /etc/cron.d/0hourly — тут настроен)

    § /etc/cron.daily — каждый день;

    § /etc/cron.weekly — каждую неделю;

    § /etc/cron.monthly — каждый месяц.

    Список всех задач cron у всех пользователей в Linux

    1. /etc/crontab (можно посмотреть глазами cat /etc/crontab)

    2. Клиентский crontab ( crontab -u user -l)

    3. /etc/anacrontab (можно посмотреть глазами cat /etc/anacrontab)

    4. /etc/cron.d/ (Кроме того, cron считывает файлы в каталоге /etc/cron.d/)

    5. /etc/cron.daily/ Запуск всех скриптов один раз в день

    6. /etc/cron.hourly/ Запуск всех скриптов один раз в час

    7. /etc/cron.monthly/ Запуск всех скриптов один раз в месяц

    8. /etc/cron.weekly/ Запуск всех скриптов один раз в неделю

    Для того чтобы пройти руками все клиентские Клиентский crontab ( crontab -u user -l), можно автоматизировать для всех пользователей очевидно нужно взять список пользователей в системе из /etc/passwd и сделать для каждого пользователя crontab -u USERNAME -l, то есть:

    for user in $( cut -d ‘:’ -f1 /etc/ passwd ); do crontab -u $user -l; done

    Недостаток этого решения очевиден:
    1. Нужно всегда помнить эту команду.
    2. Если у пользователя нет задач в планировщике то мы получим сообщение «no crontab for vasua» и таких сообщений может быть десятки если у вас много пользователей — это неудобно.
    3. Вывод информации неудобно читать.

    Решение простое — создадим функцию allcrontab в файле

    /.bashrc для ввода информации в более удобном виде:

    # Определим цвета вывода

    red= ‘\e[0;31m’

    RED= ‘\e[1;31m’

    green= ‘\e[0;32m’

    GREEN= ‘\e[1;32m’

    NC= ‘\e[0m’
    # Определим нашу функцию вывода списка всех задач cron у всех пользователей

    function allcrontab() <

    for user in $( cut -d ‘:’ -f1 /etc/ passwd ); do

    usercrontab=$( crontab -l -u $ 2>/dev/null)

    if [ -n «$» ]; then

    echo -e «$====== Start crontab for user $$$$ $======$«

    crontab -l -u $ | sed ‘/ *#/d; /^ *$/d’

    echo -e «$====== End crontab for user $$$$ $========$\n»

    fi

    done

    >

    /.bashrc или перелогиниваемся и выполняем в консоле allcrontab и видим красивый вывод списка всех задач cron у всех пользователей:

    Но это не финишная прямая, а только начало, ведь опытный системный администратор знает, что кроме вывода списка заданий командой crontab -l -u USER есть еще задания планировщика в каталоге /etc/cron.d/ и это тоже нужно учитывать, потому что например панель хостинга ISPConfig сохраняет задания cron в каталоге /etc/cron.d/ с именами ispc_webXXX, где webXXX — это логин системного пользователя, например web30 и вывод crontab -l -u web30 нам скажет «no crontab for web30», а на самом деле в файле /etc/cron.d/ispc_web30 может быть такая картина:

    SHELL= ‘/bin/sh’
    */2 * * * * web30 /usr/bin/php -f /var/www/mysite.ru/web/yii cron -origin/index

    ОТЛАДКА РАБОТЫ cron

    После того как вы настроили правила, еще хотелось бы проверить работают ли они. Для этого ждем того времени, когда скрипт уже должен быть выполнен и смотрим лог cron. Обычно он находится в /var/log/cron

    Если нужно проверить скрипт, который находится в одной из специализированных папок, то тут еще проще, просто запустите run-paths, передав ей в параметр нужную папку или даже сам скрипт:

    Источник

    Как вывести список заданий Cron в Linux

    Главное меню » Linux » Как вывести список заданий Cron в Linux

    Задания Cron обычно используются для выполнения операций по обслуживанию системы. Например, задание cron можно настроить для автоматизации повторяющихся задач, таких как резервное копирование баз данных, обновление системы с помощью последних исправлений безопасности, очистка кэша, отправка электронных писем и т. д.

    В этой статье объясняется, как составить список заданий cron.

    Список пользователей Cron Jobs

    Файлы crontab пользователей именуются в зависимости от имени пользователя, а их расположение зависит от операционной системы. В дистрибутивах на основе Red Hat, таких как CentOS, файлы crontab хранятся в каталоге /var/spool/cron, а в Debian и Ubuntu – в каталоге /var/spool/cron/crontabs.

    Чтобы получить список всех заданий cron для пользователя, в котором вы сейчас зарегистрированы, используйте команду crontab:

    Если пользователь настроил задания cron, содержимое пользовательских crontabs будет отображаться на экране. В противном случае команда напечатает no crontab for .

    Чтобы вывести список заданий cron других пользователей, используйте опцию -u для указания имени пользователя в конце команды. Например, чтобы перечислить задания cron пользователя с именем «andreyex», вы должны использовать:

    Каждый пользовательский файл crontab имеет разрешение 600 и принадлежит пользователю. Только root и пользователи с привилегиями sudo могут просматривать задания cron других пользователей.

    Чтобы узнать, какие пользователи создали задания cron, перечислите содержимое каталога spool как пользователь root или sudo:

    Вывод будет выглядеть примерно так:

    Перечисление заданий cron системы

    /etc/crontab и файлы внутри каталога /etc/cron.d являются общесистемными файлами crontab, которые могут редактировать только системные администраторы.

    Используйте cat, less или любой текстовый редактор, чтобы просмотреть содержимое файлов:

    В большинстве дистрибутивов Linux вы также можете поместить скрипты в каталоги /etc/cron., и скрипты выполняются каждый час/день/неделя/месяц.

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

    Например, чтобы просмотреть все еженедельные задания cron, введите:

    Если вывод пуст, это означает, что еженедельных заданий cron нет.

    Системные таймеры

    Системные таймеры – это файлы модулей, которые заканчиваются суффиксом *.timer и позволяют запускать сервисные модули в зависимости от времени.

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

    Чтобы просмотреть список всех системных таймеров на вашем компьютере, выполните следующую команду:

    Вывод

    Мы показали вам, как составить список заданий cron и системных таймеров.

    Не стесняйтесь оставлять комментарии, если у вас есть какие-либо вопросы.

    Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

    Источник

    Читайте также:  Очистить скачанные обновления windows 10
    Оцените статью