3

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

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 &

查询运行到无穷大。

如何正确运行此查询?

4

2 回答 2

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 &

你明白了。:)

于 2013-05-08T21:03:07.793 回答
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
于 2013-05-08T21:05:53.610 回答