Как root, как я могу перечислить crontabs для всех пользователей?

47

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

По сути, я хочу запустить crontab -lдля всех пользователей.

Очень нерегулярный
источник

Ответы:

77

Хорошо зависит от скрипта, но вы легко можете найти свой crontab как root с

crontab -l -u <user>

Или вы можете найти crontab из спула, где находится файл для всех пользователей

cat /var/spool/cron/crontabs/<user>

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

cd /var/spool/cron/crontabs/ && grep . *
Клерк
источник
1
Круто, смотря в / var / spool / cron / crontabs / работал отлично, спасибо!
Сильно нерегулярный
1
crontab -e -u <user>редактировать это работает также
vladkras
/var/spool/cron/<user>на моем хосте Centos 7.
Боб Стейн
5

Один лайнер, который перечисляет всех пользователей и печатает cron для каждого пользователя:

for user in $(getent passwd | cut -f1 -d: ); do echo $user; crontab -u $user -l; done

Это решение:

  • Не требует знания системного пути crontab (например, /var/spool/cron/crontabs/vs/var/spool/cron/
  • Не будет перечислять «бесхозные» кроны, то есть кроны для пользователей, которые больше не существуют (и, следовательно, не выполняются эффективно)
Якуб Кукул
источник
Примечание: это работает, shно нет bash.
Ий
0

В RHEL / OEL вы можете перечислить задания cron, созданные всеми пользователями:

#cd /var/spool/cron/
#ls -1
root
oracle
user1

Чтобы увидеть cronjobs рута:

#cat root
Вивек Б.С.
источник
Следует использовать интерфейс (команду) crontab (1), поскольку он защищает от одновременного редактирования базы данных crontab.
Дирк