メールを送信するプロセスが見つかりませんか?

メールを送信するプロセスが見つかりませんか?

私は愚かなことをしてwhileループを実行し、10秒ごとに電子メールを送信するawkを実行しました。バックグラウンドプロセスとして実行します。

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を実行しました。何も現れません。while、、、、確認しましdanた。sendmailmyscript.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列)を見つけ、プロセスを終了してスリープモードに切り替えます。親プロセスは、見つからないコマンドをbash実行するシェルです。while

ps以下で見つかったプロセスIDを使用して親エントリを見つけた後pgrep

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

関連情報