나는 어리석은 짓을 해서 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
, sendmail
, 확인했습니다 myscript.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'))