使用&发送来自bash的电子邮件时失败(背景)

时间:2013-05-08 07:42:28

标签: bash email

当我使用此命令发送电子邮件时:

mail -s "export CSV" -a calls.tar mail@mail.pl < text.txt > /dev/null 2>&1
一切正常。但是当我在行尾使用&时:

mail -s "export CSV" -a calls.tar mail@mail.pl < text.txt > /dev/null 2>&1 &

查询正在运行无限。

如何正确运行此查询?

2 个答案:

答案 0 :(得分:3)

理想情况下,您应该尝试查找正在发生的事情,但如果您匆忙或一切都失败,您可以尝试将所有内容包含在()中并在后台运行。这应该有用。

$ ( mail -s "export CSV" -a calls.tar mail@mail.pl < text.txt > /dev/null 2>&1 ) &

在任何情况下,您总是可以使用调试技术并执行命令一点一点地增加复杂性,以查看失败的位置。

$ mail -s "export CSV" mail@mail.pl &
$ mail -s "export CSV" mail@mail.pl < text.txt &
$ mail -s "export CSV" mail@mail.pl < text.txt > /dev/null &
$ mail -s "export CSV" mail@mail.pl < text.txt > /dev/null 2>&1 &
$ mail -s "export CSV" -a calls.tar mail@mail.pl < text.txt > /dev/null 2>&1 &

你明白了。 :)

答案 1 :(得分:1)

1。正如 psibar 指出的那样,您应该尝试将输出重定向到日志:

mail -s "export CSV" -a calls.tar mail@mail.pl < text.txt >> /tmp/csv.log 2>&1 &

2. 你确定命令永远不会完成吗?预期的输出是:

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

然后按ENTER

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

注意: 19266这里是后台进程的PID。您可以使用

检查它是否仍在运行
 ps -ef | grep [1]9266