Каков формат для передачи по каналу сообщения в sendmail?

Проблема, Вы используете в для чего-то, который, как не предполагают, использовался для, действительно. У Вас также есть две конфликтующих цели: "выполненная программа 2 после программы 1" и "выполненной программы 2 в 17:00 12 января".

Одна часть Вашей проблемы проста решить: в позволяет несколько команд. Так, вместо просто использования at запланировать sas сценарий, можно поместить rm в задании также.

at 5:00 PM JAN 11 <<EOJ
sas program1.sas
rm file1.sas7bdat file2.sas7bdat file3.sas7bdat file4.sas7bdat file5.sas7bdat
EOJ

Нет никакой причины & в sas строка; at всегда задания выполнений "в фоновом режиме".

Затем, необходимо изобразить, как Вы хотите решить конфликт, упомянутый ранее. В частности, если задание 11 января не закончилось 24 часа спустя (к 17:00 12 января). Существует несколько способов пойти об этом:

  • Это не действительно задание Jan 12. Это должно работать, как только program1.sas заканчивается. В этом случае просто сделайте это частью первого задания выше, точно так же, как rm.
  • Этого никогда не будет происходить. Если это сделает, то Вы зафиксируете его вручную. В этом случае просто запланируйте его как тот выше.
  • Это должно ожидать. В этом случае Вы могли или запланировать его в конце первого в задании, или использовать файл блокировки или вычислить соответствующее количество времени для сна (или использование sleepenh, при наличии, чтобы не делать вычисление самостоятельно).
23
17.11.2014, 01:24
2 ответа

Ваше echo утверждение должно действительно выводить новые строки, а не последовательность \ с последующим n. Вы можете сделать это, предоставив опцию -e:

echo -e "Subject:Hello \n\n I would like to buy a hamburger\n" | sendmail email@example.com

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

echo "Subject:Hello \n\n I would like to buy a hamburger\n"
echo -e "Subject:Hello \n\n I would like to buy a hamburger\n"
25
27.01.2020, 19:42

«здесь документ» в сценариях оболочки (вы составляете заголовки и тело сообщения)

#!/bin/sh
TO=email@example.com
/usr/sbin/sendmail -i $TO <<MAIL_END
Subject: Hello
To: $TO

I would like to buy a hamburger
MAIL_END

тело сообщения от внешнего файла

#!/bin/sh
TO=email@example.com
BODY_FILE=mail.txt
(cat - $BODY_FILE)<<HEADERS_END | /usr/sbin/sendmail -i $TO
Subject: Hello
To: $TO

HEADERS_END
1
27.01.2020, 19:42

Теги

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