Дата в теме электронной почты Crontab - PullRequest
0 голосов
/ 19 мая 2018

У меня есть сервер Ubuntu, на котором я планирую процессы crontab следующим образом:

59 2 * * * : Backup Settings; ~/backup_settings.sh

По завершении процесса я получу электронное письмо с темой строки "Настройки резервного копирования ...".По сути, функция noop (:) ничего не делает со словами «Настройки резервного копирования».Я хотел бы добавить сегодняшнюю дату в тему письма.Естественно, я попытался

59 2 * * * : $(date +%Y%m%d) Backup Settings; ~/backup_settings.sh

, но это не привело к желаемой теме письма, например, «20180519 Настройки резервного копирования».Код $ (...) становится недооцененным.Я не хочу запускать другой сценарий с функцией электронной почты, который затем вызовет backup_settings.sh.Есть ли способ сделать это, используя только команды Bash в crontab?

1 Ответ

0 голосов
/ 19 мая 2018

Символ % является специальным в crontab и должен быть экранирован как \%:

59 2 * * * : $(date +\%Y\%m\%d) Backup Settings; "$HOME/backup_settings.sh"

С man 5 crontab в системе Ubuntu:

Вся командная часть строки, вплоть до новой строки или символа %, будет выполнена /bin/sh или оболочкой, указанной в переменной SHELL файла crontab.Знаки процента (%) в команде, если они не экранированы обратной косой чертой (\), будут заменены символами новой строки, и все данные после первого % будут отправлены команде в качестве стандартного ввода.

Обратите внимание, однако, что cron будет вводить команду cronjob дословно в качестве темы в любом электронном письме, которое он отправляет, а не в расширенной командной строке.

Чтобы отправить электронное письмо с вашимсобственное название, используйте mail явно:

59 2 * * * "$HOME/backup_settings.sh" | mail -s "$(date +\%Y\%m\%d) Backup Settings" myname

(где myname - адрес, на который вы хотите отправить электронное письмо).

...