LINUX.ORG.RU
ФорумAdmin

Не работает команда в cron -e


0

0

С консоли (bash) работает вот такая команда
(/bin/sort -r -k 2,5 /tmp/rate-mail-`/bin/date "+%Y-%m-%d"`-10.10.txt | /bin/awk '{if ($2 > 1) {print}}') | /bin/mail -s 'Bla Bla' email@address
В crontab не работатет.
Пробовал и так 
bash -c "(/bin/sort -r -k 2,5 /tmp/rate-mail-`/bin/date "+%Y-%m-%d"`-10.10.txt | /bin/awk '{if ($2 > 1) {print}}') | /bin/mail -s 'Bla Bla' email@address"
все равно не работает.
Как только вместо `/bin/date "+%Y-%m-%d"` подставляешь результат этой команды все работает.
Нелп.
anonymous

Попробуйте экранировать ковычки в crontab-е (это для случая с bash -c):
часть команды `/bin/date "+%Y-%m-%d"` переписать как `/bin/date \"+%Y-%m-%d\"`

Да, а из командной строки вариант с "bash -c" работает ?

spirit ★★★★★
()

`/bin/date +\%Y-\%m-\%d`

anonymous
()

И не будет работать. Читай man 5 crontab про %
Лучше оформить ввиде скрипта и его запускать по крону.

Percent-signs (%) in the command,
       unless escaped with backslash (\), will be changed into newline charac-
       ters,  and  all  data  after the first % will be sent to the command as
       standard input. There is no way to split a  single  command  line  onto
       multiple lines, ala the shell's trailing "\".

sdio ★★★★★
()
Ответ на: комментарий от sdio

Пробовал много вариантов, заработал вариант такой.
bash -c "(/bin/sort -r -k 2,5 /tmp/rate-mail-`/bin/date "+\%Y-\%m-\%d"`-10.10.txt | /bin/awk '{if (\$2 > 1) {print}}') | /bin/mail -s 'Bla Bla' email@address"

Еще бэкслешем символ "$" нужно было защитить.

Всем спасибо.

anonymous
()

Сохранил бы в файл и его запускал из крона.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.