2013-05-08 3 views
3

Когда я посылаю по электронной почте с помощью следующей команды:Сбой при отправке электронной почты с помощью Баш & (фон)

mail -s "export CSV" -a calls.tar [email protected] <text.txt> /dev/null 2>&1 

все работает нормально. Но когда я использую & в конце линии:

mail -s "export CSV" -a calls.tar [email protected] <text.txt> /dev/null 2>&1 & 

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

Как выполнить этот запрос правильно?

+0

Я просто опробовал тот же запрос, и он отлично работает для меня. Может быть, вам нужно перенаправить ошибки в какой-либо файл, чтобы узнать, что происходит в вашем случае? – psibar

+0

infaustus, больше информации о том, что происходит? – msb

ответ

3

В идеале вы должны попытаться найти то, что происходит, но если вы в спешке или все проваливается, вы можете попытаться просто вложить все в() и запустить это в фоновом режиме. Это должно сработать.

$ (mail -s "export CSV" -a calls.tar [email protected] <text.txt> /dev/null 2>&1) & 

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

$ mail -s "export CSV" [email protected] & 
$ mail -s "export CSV" [email protected] < text.txt & 
$ mail -s "export CSV" [email protected] <text.txt> /dev/null & 
$ mail -s "export CSV" [email protected] <text.txt> /dev/null 2>&1 & 
$ mail -s "export CSV" -a calls.tar [email protected] <text.txt> /dev/null 2>&1 & 

Вы получаете идею. :)

1

1. Как отметил psibar вы должны попытаться перенаправить вывод в журнал:

mail -s "export CSV" -a calls.tar [email protected] <text.txt>> /tmp/csv.log 2>&1 & 

2. Вы уверены, что команда никогда не заканчивается? Ожидаемый результат будет:

[email protected]:~$ mail -s "export CSV" -a calls.tar [email protected] <text.txt> /dev/null 2>&1 &  
[1] 19266 
[email protected]:~$ 

и после того, как вы нажмете ENTER:

[1]+ Done  mail -s "export CSV" -a calls.tar [email protected] <text.txt> /dev/null 2>&1 &     
[email protected]:~$ 

Примечание:19266 здесь является PID фонового процесса. Вы можете проверить, все ли работает, используя

ps -ef | grep [1]9266 
Смежные вопросы