Отправка почты из сценария, запускаемого Crontab [дубликат]

О действительной причине вы должны спросить автора (ов). Я могу только сказать вам, что это очень хорошая практика:

Из статьи в Википедии о железнодорожном пневматическом тормозе :

Система Westinghouse использует давление воздуха для зарядки резервуаров (баков) воздуха на каждой машине. Полное давление воздуха дает сигнал каждой машине отпустить тормоза. Снижение или потеря давления воздуха дает сигнал каждой машине задействовать тормоза, используя сжатый воздух в своих резервуарах.

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

Конечно, это не объясняет, почему существуют два режима rm (рекурсивный и нерекурсивный). Может быть, это то, о чем вы спрашиваете. Тем не менее, сделать более безопасный вариант по умолчанию было правильным решением.

1
08.09.2017, 18:13
2 ответа

1. Сначала :используйте #!/bin/bashвместо#!/BIN/BASH

С помощью #!/BIN/BASH, если вы запускаете такой скрипт:

bash script.sh

..все работает нормально.

Но если выполнить:

./script.sh

..вы получаете ошибку:

-bash:./script.sh: /BIN/BASH: bad interpreter: No such file or directory

2. Выполните эту команду:

echo 'PATH='$PATH

добавить вывод в начало скрипта.

Пример:

# echo 'PATH='$PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
1
27.01.2020, 23:33

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

Как правило, задачи cron должны работать молча , если нет ошибок , но они должны быть очень подробными в случае любой ошибки.

Расширяя ответ Егора Васильева, вы можете легко включить «режим отладки» в скрипте bash с помощью

#!/bin/bash -x
exec 2>>/var/log/cron.log

команды. Первый интерпретирует ваш скрипт по флагу -x, что означает, что вы получите всю выполненную команду в файле stderr.

А exec 2>>/var/log/cron.log— это команда, которая ничего не выполняет , а перенаправляет стандартную ошибку в файл журнала в режиме добавления. По сути, интерпретатор оболочки "re -выполняет" себя с заданными перенаправлениями, даже без изменения контекста выполнения скрипта .

1
27.01.2020, 23:33

Теги

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