Як я можу отримати список усіх запланованих завдань cron на моїй машині?


201

Мій sysadmin налаштував на моїй машині купу робочих місць. Я хотів би точно знати, що заплановано на який час. Як я можу отримати цей список?


3
Це не відповідь на питання, а лише примітка про кращі практики. Ви можете налаштувати їх як завдання для клієнтів із кроном для rootчи apacheбудь-чого іншого, але слід використовувати /etc/crontabабо (що краще, у більшості дистрибутивів) /etc/cron.dта /etc/cron.[timeframe].
mattdm


Я опублікував сценарій, який автоматизує це корисною мірою за адресою: - stackoverflow.com/questions/134906/… Це не ідеально, але, ймовірно, покриває 90% потреб. Це хороший приклад того, що не писати в баш.
Девід Коллер

Відповіді:


143

Залежно від налаштування вашої системи Linux, ви можете переглянути:

  • /var/spool/cron/* (користувацькі crontabs)
  • /etc/crontab (загальносистемний кронтаб)

Крім того, у багатьох дистрибутивах є:

  • /etc/cron.d/* Ці конфігурації мають той самий синтаксис, що і /etc/crontab

  • /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly,/etc/cron.monthly

Це просто каталоги, які містять виконавчі файли, які виконуються щогодини, щодня, щотижня або щомісяця відповідно до їх імені каталогу.

Крім того, ви можете мати на робочих місцях (чек /var/spool/at/*), анакрон ( /etc/anacrontabі /var/spool/anacron/*) і, мабуть, інших, про які я забуваю.


4
Дякую, я знайшов їх /etc/cron.daily. Як працює цей dailyфайл? Який час працюватимуть щоденні роботи? На моїй машині вони, здається, працюють близько полудня, але хотілося б сказати моєму сисадміну, як змінити це на півночі.
Франк

5
cron.daily викликається /etc/crontab, наприклад, в моїй системі Ubuntu це: 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )це означає 6:25 ранку.
Коув

cron.daily викликається з / etc / crontab в моїй системі RHEL5, якщо ви хочете отримати більше даних.
jsbillings

У новій Fedora (і, мабуть, RHEL6 - ще не виглядав), cronieдемон переймається тими, хто використовує конфігурацію в /etc/anacrontab.
mattdm

Іноді це /var/cronзанадто.
CMCDragonkai

135

У більшості крон (напр., Vixie-Cron - Debian / Ubuntu за замовчуванням, Cronie - Fedora за замовчуванням, Solaris Cron ...) ви отримуєте список запланованих завдань на крон для поточного користувача через:

$ crontab -l

або для іншого користувача через

# crontab -l -u juser

Щоб отримати чіткості для всіх користувачів, ви можете перейти через всіх користувачів і викликати цю команду.

Крім того, ви можете шукати файли котушки. Зазвичай вони зберігаються під /var/spool/cron, наприклад, для наступного каталогу vcron

/var/spool/cron/crontabs

містить усі налаштовані Crontabs всіх користувачів - крім кореневого користувача, який також може налаштувати завдання за допомогою системної crontab, яка знаходиться за адресою

/etc/crontab

З Cronie (за замовчуванням у Fedora / CentOS) є також .dкаталог config стилів для системних завдань cron:

/etc/cron.d

(Як завжди, .dкаталог спрощує збереження записів конфігурації, що входять до складу різних пакетів.)

Для зручності більшість дистрибутивів також надають каталоги, де пов'язані / зберігаються сценарії періодично виконуються, наприклад:

/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly

Своєчасним виконанням цих сценаріїв, як правило, керується за допомогою run-partsзаписів у системному кронтабі або через анакрон .

За допомогою Systemd (наприклад, у Fedora, CentOS 7, ...) періодичне виконання завдань може бути додатково налаштовано за допомогою таймерних блоків . Увімкнені системні таймери можуть відображатися через:

$ systemctl list-timers

Зауважте, що у користувачів, окрім кореня, можуть бути і примірники системних користувачів, які працюють там, де налаштовані таймери. Наприклад, у Fedora за замовчуванням запускається користувальницький системний екземпляр для кожного користувача, який зараз увійшов у систему. Їх можна розпізнати за допомогою:

$ ps aux | grep 'systemd[ ]--user'

Ці таймери користувачів можуть бути перелічені через:

$ systemctl --user list-timers

Альтернативою видачі list-timersкоманди є пошук файлів одиниць таймера (шаблону:) *.timerта символічних посилань на них у звичайних системних та системних каталогах, налаштованих системою користувача:

$ find /usr/lib/systemd/ /etc/systemd -name '*.timer'
$ find /home '(' -path '/home/*/.local/share/systemd/user/*' \
              -o -path '/home/*/.config/systemd/*' ')' \
      -name '*.timer'  2> /dev/null

(Як і у звичайних сервісних одиницях, блок таймера вмикається за допомогою створення символічного посилання в правому каталозі systemd config.)

Дивитися також:


Я не став голосом. Але я просто спробував crontab -l -u root(тому що ті, які я хочу знати, про те, що я працюю root), і це говорить про те, що я не маю права користуватися -u.
Франк

3
Тоді вам доведеться викликати його з достатньою кількістю привілеїв - тобто як rootкористувача.
maxschlepzig

2
Все ще не завершено - деякі версії завдань, які виконують cron з /etc/cron.d та /etc/cron.{daily,hourly,monthly,weekly} без помічницької програми, викликаної з / etc / crontab.
mattdm

2
@maxschlepzig - але не завжди. І питання полягає в тому, "як я можу отримати список усіх робочих місць cron"; відповідь "ну ось деякі з них" - це не відповідь.
mattdm

1
@maxschlepzig - cronieяк постачається у Fedora та RHEL6, не посилаються на тих, хто входить /etc/crontab, а замість цього використовують /etc/anacrontab. Я можу помилитися з приводу будь-яких фактичних реалізацій, які не посилаються на них у жодному файлі конфігурації. (Але тоді я не спростував жодного .... я просто говорю.)
mattdm

5

Щоб перелічити всі крони для даного користувача.

crontab -u ім'я користувача -l;

Щоб перелічити всі крони для всіх користувачів

Запустити його як суперкористувача

#!/bin/bash
#List all cron jobs for all users
for user in `cat /etc/passwd | cut -d":" -f1`;
do 
crontab -l -u $user;
done

1
ОП просить перерахувати список усіх робочих місць у галузі.
Драв Слоун

1
Чомусь не відображаються /etc/cron.d/ завдання.
джамшид

Не працює. msgstr "немає кронодних даних для www-даних". але www-дані ім'я користувача є.
mishanon
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.