当我使用此命令发送电子邮件时:
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 &
查询正在运行无限。
如何正确运行此查询?
答案 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