Когда я запускаю эту почтовую команду из терминала, нет проблем:

mail -s "Test Mail" user@example.com < home/user/example.txt

Когда я добавляю его в скрипт bash, который в основном это делает, проблем не возникает:

tmpString=$(ssh user@server `perl -s` < /home/user/perlscript.pl 2> errorfile.txt)
mail -s "Test Mail" user@example.com < home/user/example.txt

Но когда я создаю crontab для запуска скрипта bash, письмо никогда не отправляется:

10 14 * * * /home/user/mybashscript 

Тем не менее, я получаю письмо от cronjob о выводе. Электронное письмо с темой "Тестовая почта" никогда не приходит.

У кого-нибудь была эта проблема раньше?

След:

Хорошо, я просто изменю некоторые личные имена. Письмо должно быть отправлено до последнего эха, но оно не отображается в след?

+ . /home/user/.bashrc
++ PS1=`\u@\h \w$`
++ TERM=vt100
++PATH=/usr/sbin:/usr/bin:/bin
++ ssh user@example `perl -s`
+ scriptString=`$VAR` = ``\``Build was OK`\``;`
+echo `$VAR1`= ``\``Build was OK`\``;`
$VAR1 = `Build was OK`;
+ [[ $VAR1 = `Build was OK`; == *\B\u\i\l\d\ \f\a\i\l\e\d* ]]
+ echo

Спасибо!

1 ответ1

0

crontab не имеет такой же среды, как ваша, поэтому в верхней части вашего скрипта после shebang поместите:

. ~/.bashrc || . /etc/profile

это установит PATH для дочернего процесса.

Кроме того, измените shebang на #!/bin/bash -x чтобы включить отладку, и в вашем crontab сделайте это:

* * * * * /path/to/script >/tmp/trace 2>&1

и приходите снова с трассировкой отладки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .