Crontab + Journalctl: дополнительные сообщения - PullRequest
0 голосов
/ 06 сентября 2018

Отказ от ответственности: ниже описано, что сделано для целей обучения в CentOS 7.

Я хочу перенаправить вывод задания crontab на journalctl. Когда у меня есть следующая запись, он просто отправляет письмо пользователю root.

# crontab -l
* * * * * echo "Hello World"

Я читал о systemd-cat, который может выполнять процесс, передавая его вывод в журнал. Итак, я сделал это так:

# crontab -l 
* * * * * systemd-cat -t "cron-bot" echo "Hello World"

Но теперь я получаю два сообщения журнала каждую минуту:

{
  "_TRANSPORT" : "syslog",
  "SYSLOG_IDENTIFIER" : "CROND",
  "MESSAGE" : "(root) CMD (systemd-cat -t \"cron-bot\" echo \"Hello World\")",
  "_CMDLINE" : "systemd-cat -t cron-bot echo Hello World",
}
{
  "_TRANSPORT" : "stdout",
  "SYSLOG_IDENTIFIER" : "cron-bot",
  "MESSAGE" : "Hello World",
  "_COMM" : "echo",
}

или в коротком формате:

Sep 06 08:58:01 hostname CROND[13417]: (root) CMD (systemd-cat -t "cron-bot" echo "Hello World")
Sep 06 08:58:01 hostname cron-bot[13417]: Hello World

Может кто-нибудь объяснить мне это поведение? Я хочу получать только выходные данные о работе (cron-bot[13417]: Hello World) и не получаю саму команду (CROND[13417]: ...), но в основном я прошу об этом, чтобы узнать больше о теме.

1 Ответ

0 голосов
/ 06 сентября 2018

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

journalctl -u cron _TRANSPORT=stdout

(-u cron может быть -u crond или что-то подобное в CentOS, я не уверен.)

...