В настоящее время я отключил Skype, используя ps ax | grep skype и затем выдача kill -9 для PID. Есть три PID, которые нужно убить.

Какие неблагоприятные последствия для Ubuntu возникают в результате убийства Skype таким образом? Я обеспокоен тем, что ресурсы не освобождаются или файлы мусора остаются в разных местах.

2 ответа2

1

Вы правы, чтобы быть обеспокоенным.

Программы Unix/Linux могут регистрировать процедуры обработки сигналов. Они вызываются, когда они получают сигналы от операционной системы. Вы можете увидеть полный список сигналов, используя man 7 signal (или онлайн здесь)

Когда вы вызываете kill , он отправляет сигнал процессу. Сигнал по умолчанию - SIGTERM (это эквивалентно kill -15 , kill -TERM или просто kill), а поведение по умолчанию - выход из приложения. Более сложные приложения, возможно, в том числе Skype, настроят процедуру обработки сигналов для правильного закрытия соединений и, возможно, для сохранения некоторой информации о сеансе.

Когда вы kill -9 (или его эквивалентную kill -KILL), вы отправляете SIGKILL. Как объясняется на странице справки по сигналам, «сигналы SIGKILL и SIGSTOP не могут быть перехвачены, заблокированы или проигнорированы». Это означает, что никакая подпрограмма обработки сигнала не будет выполняться, и все приятные мелочи, которые программисты Skype вводят, чтобы заставить их программное обеспечение работать в вашей системе, игнорируются.

Вы всегда должны пытаться убить процессы без -9 первую очередь. Если это не сработает, только тогда вы должны попробовать kill -9 .

В сторону: вы можете увидеть, что некоторые демоны поддерживают kill -HUP для перезагрузки файла конфигурации. Эти программы имеют обработчики сигналов, настроенные для запуска при получении сигнала SIGHUP. Программа kill названа так, чтобы предполагать, что она всегда убивает программы, но на самом деле это просто способ отправки сигналов.

1

Трудно понять, если вы не получили исходный код Skype, который AFAIK является закрытым исходным кодом. В любом случае, вы должны сначала попробовать kill -TERM прежде чем пытаться убить более потенциально kill -KILL . Также я предлагаю использовать -KILL вместо -9, это более читабельно. Вы также можете взглянуть на команду killall .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .