Вход ВСЕГО stderr вывода crontab в файл

.bak обычно определяет это, файл является резервной копией чего-то, но кроме которого он дает драгоценно мало информации относительно фактического типа файла.

Попытайтесь смотреть на вывод file команда, которая изучает первые несколько битов файла, чтобы видеть, распознает ли это его как известный тип файла:

caleburn: ~/ >file image001.jpg 
image001.jpg: JPEG image data, JFIF standard 1.01
caleburn: ~/ >file oops.png 
oops.png: PNG image data, 935 x 546, 16-bit/color RGB, non-interlaced
caleburn: ~/ >file zones.zip 
zones.zip: Zip archive data, at least v2.0 to extract
caleburn: ~/ >file eth2.pcap 
eth2.pcap: tcpdump capture file (little-endian) - version 2.4 (Ethernet, capture length 96)

И так далее, и так далее. После того как Вы знаете, какой файл Linux думает, что это, Google должен смочь предложить, как получить доступ к нему.

... Поочередно, можно спросить, кто бы ни отправил его Вам, чем исходное имя файла, как предполагалось, было и узнало тот путь.:)

12
24.01.2012, 01:53
3 ответа

В crontab можно установить MAILTO для указания на почтовый псевдоним, который запускает скрипт. Тот сценарий принял бы сообщение электронной почты, снял бы изоляцию с заголовков и другого самодовольного дурака, и зарегистрировал бы остаток с регистратором. Так как весь вывод сценария крона отправляется в адрес, указанный MAILTO, Вы получили бы все.

Пример: в crontab

MAILTO=myalias

В/etc/mail/aliases (принимающий Вы используете sendmail),

myalias:"|/usr/local/bin/my-processing-script.sh"

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

6
27.01.2020, 19:56
  • 1
    можно ли быть более конкретны относительно установки MAILTO, псевдонима, MTA, сценария, и т.д.? –  endolith 29.11.2012, 04:27
  • 2
    @endolith, который я отредактировал ответ для предоставления основной установки, которая должна работать на sendmail и широко совместимый MTAs. Необходимо будет записать сценарий сами. –  Kyle Jones 29.11.2012, 05:05

Любой вывод, произведенный командой, отправляется пользователю, указанному в переменной среды MAILTO, как установлено в crontab (5) файл или, если никакая переменная MAILTO не установлена (или если это в (1), или обработайте в пакетном режиме (1) задание), владельцу задания. Если команда не произведет вывода или если переменная среды MAILTO будет установлена на пустую строку, то никакая почта не будет отправлена.

Так как это использует местную почту, Вы действительно ничего не должны настраивать или возможно просто устанавливать mailx, если это уже не здесь. Крон отправит Вам вывод, можно сохранить почту в файле и сделать много вещей оттуда. Попытка изменить способ, которым крон работает для прямого удовлетворения потребности, не является способом пойти. Если Вы не думаете так, просто исправляете и re-buil крон, назовите его my_cron и используйте его вместо крона. И будьте готовы в конечном счете сохранить свое my_cron актуальное и часто восстанавливать его.

Добавьте это в начале всех своих сценариев для входа всего и остановки в первой ошибке

exec 2>&1 > /var/log/YOUR_LOG_FILE
set -e
5
27.01.2020, 19:56
  • 1
    перенаправление должен заказать быть противоположным? > /var/log/YOUR_LOG_FILE 2>&1 т.е. сначала перенаправьте stdout в файл и только затем перенаправьте stderr к stdout (который теперь указывает на файл). –  jfs 21.05.2016, 11:32

Сценарий Райана Йе по адресуhttps://stackoverflow.com/a/7145618/20774также полезен для этого, хотя он работает и с stdout, и с stderr.


I have a small script cronlog.sh to do this. The script code

#!/bin/sh
echo "[`date`] Start executing $1"
$@ 2>&1 | sed -e "s/\(.*\)/[`date`] \1/"
echo "[`date`] End executing $1"

Then you could do

cronlog.sh /opt/scripts/sql_fetch >> your_log_file

Example result

cronlog.sh echo 'hello world!'

[Mon Aug 22 04:46:03 CDT 2011] Start executing echo
[Mon Aug 22 04:46:03 CDT 2011] helloworld!
[Mon Aug 22 04:46:03 CDT 2011] End executing echo
0
27.01.2020, 19:56

Теги

Похожие вопросы