Как я могу заносить в список все cronjobs на моем сервере?

Я управляю сервером и часто догадываюсь, что происходят вещи автоматизация и(или) периодически. Как я могу знать, каков Ваш источник?

Посмотрев logs, процессы, каталоги пользователей... я заканчиваю тем, что догадываюсь, что говорится о процессе, брошенном посредством cronjobs.
Но просвет, проверять cronjobs каждого из пользователей - тоскливо и делать crontab -l -u <usuario> для каждого из них он может проводить много промежуток времени.

Следовательно: существует какой-то способ, более легкий для того, чтобы быть виден, какой контент есть у crontab каждого из пользователей сервера?

4
задан 08.01.2017, 19:23
0 ответов

Да! Как ты комментируешь в вопросе, crontab -l служи для того, чтобы показать контент crontab для пользователя, с которым ты работаешь. Это такое для большинства распределения cron (больше info).

После, crontab -l -u <usuario> он позволяет тебе знать, каков контент crontab для пользователя <usuario>.

Следовательно, чтобы знать контент всех crontabs вопрос коренится циркулировать по всем именам пользователя системы и бросать команду crontab -l -u <usuario> для каждого из них.

Ввиду того, что /etc/passwd он содержит такой список, давайте использовать это. Как мы видим здесь образно, Ваши поля отделены двумя точками и то, что мы желаем, так это первое поле:

introducir la descripción de la imagen aquí

Следовательно, мы должны извлекать первый элемент каждой линии этого файла.

Общее количество, что этот рукописный шрифт делает то, что мы хотим:

while IFS=":" read -r usuario _
do
   echo "crontab del usuario ${usuario}:"
   crontab -l -u "$usuario"
done < /etc/passwd

Этот использует технику более просторно рекомендуемая чтения файла (описанная в How хан I read в file (он восходит stream, изменчиво) line-by-line (and/or field-by-field)?).

Главным образом:

  • while; do ... done < fichero циркулируй через файл fichero.
  • IFS=":" определи сельский разделитель как :
  • read -r usuario _ прочитай первое поле в $usuario и оставшаяся часть в "глупой" переменной _, так как мы не нуждаемся в Вашем контенте.
  • crontab -l -u "$usuario" ищи контент crontab пользователя $usuario.

Ощутитесь, что этот рукописный шрифт должен работать с пользователем root, так как это тот, который может видеть crontab всех пользователей из-за темы разрешений.

5
ответ дан 03.12.2019, 17:50

Обрежь делать это несколькими способами:

Выполнять это решение из-за root:

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

Выполнять это другое решение из-за root:

cat /etc/passwd | sed 's/^\([^:]*\):.*$/crontab -u \1 -l 2>\&1/' | grep -v "no crontab for" | sh

Те, которые я назначил встречу podés реализовывать ранее рукописный шрифт.

Или если он не реализует этот рукописный шрифт:

#!/bin/bash
for user in $(cut -f1 -d: /etc/passwd)
do echo $user && crontab -u $user -l
echo " "
done

Одна из трех предыдущих будет подавать тебя. Уже завись от твоего выбора.

Использованное соединение

-2
ответ дан 03.12.2019, 17:50
  • 1
    cat archivo | sed | grep он не будет служить: сначала, cat fichero | sed ненужный, так как ты можешь говорить прямо sed fichero; despué s, grep только преданная в stdout, в то время как " не crontab for" он stderr. Ademá s, что está s делая он состоит в том, чтобы печатать цепь " crontab - или..." когда то, что мы хотим, состоит в том, чтобы выполнять ее. –  08.01.2017, 18:44
  • 2
    Относительно for user in $(...) не está совсем не recomenada: Why you don' t read lines with " for" . Bá sicamente, может теряться формат и расширять некорректно с glob. –  08.01.2017, 18:49
  • 3
    Относительно полного рукописного шрифта, echo " " не необходим. С echo по отношению к сухим периодам уже ты имеешь lí nea в мишени. Ademá s´ говорить echo $user && crontab -u $user -l показывает, что ты хочешь выполнить вторую команду, если первый удается. Один echo когда бы то ни было fallará а следовательно осложняет readabilidad có я говорю. –  08.01.2017, 18:51
  • 4
    В обобщенные счета: ¡ большое спасибо из-за твоего ответа! Однако, годится проверять каждую из подсказок, так как они включают формулировки, не рекомендуемые для задания прочитать файл. –  08.01.2017, 18:52
  • 5
    Я не понимаю, потому что кто-то проголосовал как негатив, если он решает вопрос. Смоги состоять в том, чтобы это не был ожидаемый ответ, потому что он не истекает хорошие prá cticas, но также especificó в вопросе –  09.01.2017, 11:46