当我使用此命令发送电子邮件时:
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 &
查询运行到无穷大。
如何正确运行此查询?
理想情况下,您应该尝试找出正在发生的事情,但是如果您赶时间或一切都失败了,您可以尝试将所有内容都包含在 () 中并在后台运行。这应该有效。
$ ( 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.正如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