4

Я новичок в Linux. Я искал, как безопасно выйти из системы другого пользователя и нашел несколько решений, но я хочу знать, как они работают внутри. У меня есть несколько вопросов:
1. pkill -KILL -u {username} Просто отправляет SIGKILL каждому дочернему элементу init --user? и гарантирует ли это, что каждый дочерний процесс безопасно убит?
2. Это можно сделать с помощью отправки только сигналов?

PS У меня есть программа, которая создает init --user для другого пользователя, я убиваю с помощью SIGTERM, но иногда происходит сбой compiz. Вот почему мне интересно, как это должно работать правильно.

1 ответ1

3
  1. pkill -KILL -u {username} Просто отправляет SIGKILL каждому дочернему элементу init --user? и гарантирует ли это, что каждый дочерний процесс безопасно убит?

Он отправляет SIGKILL всем процессам, принадлежащим учетной записи {username} , независимо от их родителя. (Обратите внимание, что init --user несколько специфичен для дистрибутива.)

Тем не менее, это далеко не так безопасно, как вы можете пойти. SIGKILL - это метод грубой силы, который завершает все процессы, не давая им должным образом отключиться и очиститься; это противоположность "безопасно".

Многие терминальные программы реагируют на SIGHUP как "зависание линии". Через несколько секунд остальные можно остановить с помощью SIGTERM. Только тогда, если у вас останутся остатки после SIGHUP и SIGTERM, вы должны использовать SIGKILL в качестве окончательного подхода.

  1. Это можно сделать с помощью отправки сигналов?

Возможно - большинство программ понимают SIGHUP или SIGTERM. Но графические программы могут предпочесть, чтобы их останавливал менеджер сессий, то есть gnome-session, используя ICE/XSMP (я не знаю, как это работает точно). В целом, самый безопасный подход заключается в использовании команды выхода из среды рабочего стола; например:

gnome-session-quit --logout --force --no-prompt
gnome-session-save --force-logout --silent
qdbus org.kde.ksmserver /KSMServer logout 0 -1 -1
qdbus org.razorqt.session /RazorSession logout
mate-session-save --logout
xfce4-session-logout --logout

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