Cron только изредка отправляет электронную почту при выводе и ошибках

Я также видел дополнительный монитор при делании снимков экрана или экранной демонстрации. метод xrandr, объясненный выше, не сделал работавший для меня. Я Использовал подход GUI. Пошел для Отображения, Настройки-> выбрали второй монитор и выключили его. Монитор все еще показывают в менеджере по оформлению, но это, кажется, не влияет на экранную демонстрацию и т.д.Turning off the Unknown display

2
24.08.2015, 22:42
3 ответа

После дальнейшего тестирования я подозреваю, что и искажают ваши результаты. Как вы указываете, &> / dev / null - это синтаксис bash , а не синтаксис sh . В результате sh создает подоболочку и создает для нее фон. Конечно, echo подоболочки создает stderr, но моя теория такова:

  1. cron не перехватывает stderr подоболочки, и
  2. фоновая обработка подоболочки всегда завершается успешно, таким образом обходя ваш || эхо ... .

... в результате чего задание cron не выводится и, следовательно, не получает почту. Основываясь на моем чтении источника vixie-cron, может показаться, что stderr и stdout задания будут захвачены cron, но они должны быть потеряны подоболочкой.

Проверьте сами в среде / bin / sh (при условии, что у вас нет файла с именем bar):

(grep foo bar) &
echo $?
4
27.01.2020, 21:52

Я мог воспроизвести это явление в Ubuntu 15.04 с помощью следующего crontab:

* * * * * { echo job 0; } & sleep 5
* * * * * { echo job 1; } &
* * * * * { sleep 5; echo job 2; } &

Я получал письма от cron с заданием 0 каждую минуту, письма с заданием 1 время от времени (5-6 раз за последние 10 минут), нет писем с , задание 2 .

Похоже, cron ожидает выхода дочернего процесса, а затем отправляет письмо со всеми выводами stdout / stderr, которые он может в это время проглотить. Отложенный вывод из процесса внука-сироты просто отбрасывается.

3
27.01.2020, 21:52

В дополнение к комментариям выше, мне интересно, возможно ли несколько более простое объяснение.

Вспомните, что любая оболочка будет раскрывать/обрабатывать командную строку, прежде чем что-либо делать. В результате, когда вы расширяетесь с помощью sh, '&' завершает командную строку и пытается перевести ее в фоновый режим (и по умолчанию с более низким приоритетом )и не будет правильно назначать stdin/stdout/stderr в зависимости от что было перенаправлено. Так что, возможно, «состояние гонки» зависит от того, насколько быстро оболочка (sh )обрабатывает строку, которая явно будет зависеть от нагрузки на вашу систему (и, следовательно, от того, как она затем взаимодействует сcron).

0
27.01.2020, 21:52

Теги

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