Intereting Posts
Есть ли дистрибутив Linux, который не установлен, но работает из браузера? Поддерживает ли bash обратные ссылки при расширении параметров? Изменение переменной $ HOME в сценарии запуска сеанса: Gnome игнорирует его? Установка Ubuntu: ] * ERROR * EDID имеет основную версию 0 вместо 1 Как заставить wget конвертировать * все * загруженные ссылки в относительные? Awk – строка печати, если номер находится между столбцом 1 и столбцом 2 используя gmake и make Сравнение переменной с буквами верхнего и нижнего регистра VirtualBox: modprobe не может найти vboxguest, vboxsf, vboxvideo Automount не отключается в Ubuntu 12.04 или 13.04 автоматизация конфигурации CentOS 7 с использованием сценариев оболочки После обновления сенсорная панель Synaptics дает летаргический указатель Как изменить размер PNG-файла из командной строки? Получив два шаблона, найдите конкретные каталоги и напечатайте три последних имени файла, соответствующих каждому шаблону. Настройка разрешений

Почтовый вывод stderr, log stderr + stdout в cron

Я хочу, чтобы cron только отправлял по почте вывод stderr, одновременно записывая stdout + stderr в правильном порядке в файл.

Я возился с ти и подобными, но не совсем понял это правильно …

Это нормально, чтобы обернуть команду в сценарий оболочки

подобно

#!/bin/bash mycommand | maybe_some_shell_redirect_magic >> /var/log/mycommand.log 

    Я думаю, что это возможно – при сохранении порядка строк (т. Е. Stderr копируется из процесса, в который он записан), даже с использованием оболочки POSIX. Пытаться :

     #!/bin/sh exec 3>log command args ... 2>&1 >&3 |while read err; do echo "$err" >&2 echo "$err" >&3 done 

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

     mycommand 2>>/var/log/mycommand.log | tee -a /var/log/mycommand.log 

    Вы можете проверить это с помощью этого сценария вместо mycommand:

     #!/bin/bash echo stdout 1 sleep 0.1 echo stderr 1 >&2 sleep 0.1 echo stdout 2 sleep 0.1 echo stderr 2 >&2 

    Если вы удалите команды сна, порядок в файле журнала будет несколько испорчен.