我找不到发送邮件的流程?

我找不到发送邮件的流程?

我做了一些愚蠢的事情,运行了一个 awk,它运行一个 while 循环,每 10 秒发送一封电子邮件。我将其作为后台进程运行:

egrep '^[1-9]' /etc/hosts | grep -v 'localhost' | awk '{ system("ssh "$1" \42\while (true); do uptime > /home/dan/test.txt; grep \x60\hostname\x60 /etc/hosts >> /home/dan/test.txt; echo >> /home/dan/test.txt; echo >> /home/dan/test.txt; /home/dan/myscript.pl | grep FAIL -A1 >> /home/dan/test.txt;echo >>/home/dan/test.txt; if [[ $(grep FAIL /home/dan/test.txt) != \x22\x22 ]]; then  sendmail [email protected] < /home/dan/test.txt; fi;sleep 10; done\42 &"); print "" }'

我意识到我做错了什么,因为一堆电子邮件进来了,但我想如果我简单地关闭外壳就可以停止它。那行不通。我尝试执行其他 awks,运行 ps-efw 和 grep 来查找该命令中的关键字,以防可能正在运行,然后对其运行kill -9。什么也没有出现。我检查了whiledansendmailmyscript.pl

egrep '^[1-9]' /etc/hosts | grep -v 'localhost' |  awk '{ system("ssh "$1" \42 ps -efw | grep sendmail\42");}'

我认为我的下一个赌注是检查在这些盒子上发送邮件的进程,然后杀死或阻止它。我不知道如何才能做到这一点,因为 ps aux 中没有显示任何内容。

答案1

脚本通常会执行“sleep 10”。首先将它们置于停止状态:

pkill -ef --signal STOP 'sleep 10'

这将阻塞 while 循环。使用ps -ef或类似的方法查找睡眠的父 ID(PPID 列)并终止该进程和睡眠。父进程将是您的 shell,例如bash,它正在执行while您找不到的命令。

ps在使用以下方法找到的进程 ID找到其父级后,您可以使用挂断信号杀死父级pgrep

kill -hup $(ps -h -o ppid $(pgrep -f 'sleep 10'))

相关内容