Linux: как работает выход пользователя из системы

748
user590536

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

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

4

1 ответ на вопрос

3
grawity
  1. pkill -KILL -u Does it just send SIGKILL to every child of init --user? and does it ensure that every child process is safely killed?

It sends SIGKILL to all processes owned by the account, regardless of their parent. (Note that "init --user" is somewhat distro-specific.)

However, it's about as far from "safe" as you can go. SIGKILL is the brute force approach which ends all processes without letting them properly shut down and clean up; it's the opposite of "safe."

Many terminal-based programs react to SIGHUP as "line hangup". After a few seconds, the remaining ones can be stopped with SIGTERM. Only then, if you still have leftovers after both SIGHUP and SIGTERM, should you use SIGKILL as the final approach.

  1. Can It be done using sending signals?

Possibly – most programs do understand SIGHUP or SIGTERM. But graphical programs might prefer to be stopped by the session manager, i.e. by gnome-session, using ICE/XSMP (I don't know how this works exactly). In general, the "safest" approach would be to use the desktop environment's logoff command; for example:

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 
Большое спасибо. Но еще один вопрос, пожалуйста. В чем разница между gnome-session-quit и использованием `pkill -KILL - u ` user590536 7 лет назад 0
`gnome-session-quit` отправляет сообщение IPC в gnome-session, который сначала объявляет о выходе из системы с помощью XSMP, а затем завершает работу, позволяя диспетчеру отображения завершить работу сервера Xorg. grawity 7 лет назад 0
большое спасибо. Еще один пожалуйста: D. Таким образом, отправка SIGTERM в init --user не может быть связана с проблемой сбоя compiz? user590536 7 лет назад 0
и какой используется, когда Linux нормально выходит из системы? user590536 7 лет назад 0

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