Отрывок Bash для уничтожения процесса, пока это не мертво?

Наверное, нет. Это зависит от того, какие "определенные программы" означает. Если у пользователя есть интерактивная оболочка, которая полезна, они могут установить почти любое программное обеспечение, которое они хотят. Но если Вы не хотите, чтобы они смогли выполнить конкретную копию программного обеспечения, Вы уже установили, обычные полномочия файла будут работать просто великолепно. Например, создайте группу "xmmsblacklist", chmod 705/usr/bin/xmms, chgrp xmmsblacklist/usr/bin/xmms, и добавьте пользователей к той группе.

8
задан 23 July 2009 в 18:39
5 ответов

Проблема с повторным уничтожением процесса состоит в том, что у Вас есть состояние состязания с новым созданием процесса. Это не особенно вероятно, но возможно, что процесс выйдет и новый запуск процесса с тем же PID, в то время как Вы спите.

Почему необходимо неоднократно уничтожать процесс? Если это - потому что процесс выйдет, но это может занять время для выхода после получения сигнала, Вы могли использовать wait:

 kill $PID
 wait $PID

В идеальной системе Вы никогда не должны были бы повторять a kill или проблема kill -9 $PID. Если Вы действительно имеете к, Вы могли бы хотеть рассмотреть фиксацию вообще, случается так, что Вы работаете так, Вы не имеете к. Тем временем Вы, вероятно, не поразите состояние состязания, и можно принять меры против него (говорят) что проверка метки времени/proc/$PID/прежде, чем уничтожить процесс. Это - плохой hackiness, все же.

10
ответ дан 2 December 2019 в 22:48

Для всех рекомендующих шаг от kill $PID кому: kill -9 $PID, Я должен был бы напомнить Вам о Бесполезном использовании уничтожения-9.

Нет нет нет. Не используйте уничтожают-9.

Это не дает процессу шанс чисто:

  1. закройте сокетные соединения

  2. очистите временные файлы

  3. сообщите его детям, что это уходит

  4. сбросьте его терминальные характеристики

и так далее и так далее и так далее.

Обычно отправьте 15 и ожидайте секунда или два, и если это не работает, отправьте 2, и если это не работает, отправьте 1. Если это не делает, УДАЛЯЕТ ДВОИЧНЫЙ ФАЙЛ, потому что программа плохо себя ведется!

Не используйте уничтожают-9. Не производите комбайн только для уборки цветочного горшка.

Теперь, я не соглашаюсь с, "удаляют двоичную часть", но прогрессия кажется менее разрушительной, чем просто a kill -9.

Я также соглашаюсь с заботой об условиях состязания на создании новых процессов с тем же PID, упомянутым здесь.

9
ответ дан 2 December 2019 в 22:48

Сначала сделайте свое нормальное уничтожение, Сон x число секунд, и затем уничтожьте-9 это если это все еще вокруг. Кроме того, это действительно походит на нечетную ситуацию, в которую Вы вошли, мог бы хотеть объяснить нам большую проблему.

0
ответ дан 2 December 2019 в 22:48
  • 1
    Договорились. Если это doesn' t отвечают и закрываются после того, как один SIGTERM (сигнал, отправленный по умолчанию уничтожением) затем, вероятно, имеет привычку, отвечают на 2-е, 3-е, 4-е...., таким образом, Вы затем план действий должен быть SIGKILL (уничтожьте-9). Конечно, необходимо удостовериться что X в " спите X seconds" достаточно длинно, чтобы позволить процессу выполнять нормальную clear-your-desk-and-leave операцию, даже если система в большой степени загружается - это могло бы взять часть секунды обычно, но десятки секунд, когда система перегружается. –  David Spillett 23 July 2009 в 19:17

Обычно Вы хотите попробовать kill $PID во-первых,

затем позвольте ему спать некоторое время, чтобы видеть, выйдет ли это корректно.

В противном случае затем выполнитесь kill -9 $PID сильно избавиться от него.

0
ответ дан 2 December 2019 в 22:48

почему не просто

kill -9 $PID

-1
ответ дан 2 December 2019 в 22:48
  • 1
    Поскольку Вы хотите дать процессам шанс вымыться и умереть приятно, который является тем, что ТЕРМИН сигнал делает (сигнал по умолчанию). Сигнал уничтожения ("-9") doesn' t дают процессам тот шанс. –  ktower 23 July 2009 в 19:10
  • 2
    Положительная сторона, но исходный плакат действительно говорила, что он просто хотел уничтожить его. –  chris 24 July 2009 в 17:46

Теги

Похожие вопросы