Проблема с многократным уничтожением процесса заключается в том, что у вас есть условие гонки с созданием нового процесса. Это не особенно вероятно, но возможно, что процесс завершится, и новый процесс запустится с тем же PID, пока вы спите.
Почему вы должны неоднократно убивать процесс? Если это происходит из-за того, что процесс завершится, но может пройти некоторое время после получения сигнала, вы можете использовать wait
:
kill $PID
wait $PID
В идеальной системе вам никогда не придется повторять kill
или выпускать kill -9 $PID
. Если вам нужно, вы можете рассмотреть возможность исправления того, что вы используете, чтобы вам не пришлось это делать. Тем временем вы, вероятно, не попадете в состояние гонки, и вы можете защититься от него, скажем, путем проверки метки времени / proc / $ PID / непосредственно перед тем, как завершить процесс. Это плохое хакерство.
ps -ef
?