Linux: Wie funktioniert das Abmelden von Benutzern?

4

Ich bin neu mit Linux. Ich habe nach Methoden gesucht, um andere Benutzer sicher abzumelden, und habe nur wenige Lösungen gefunden. Ich möchte jedoch wissen, wie sie intern funktionieren. Ich habe einige Fragen:
1. pkill -KILL -u {username}Sendet es nur SIGKILL an jedes Kind von init --user? und stellt es sicher, dass jeder untergeordnete Prozess sicher getötet wird?
2. Kann man nur Signale senden?

PS Ich habe ein Programm, das init - user für andere Benutzer erstellt. Ich töte mit SIGTERM, aber manchmal stürzt compiz ab. Das ist, warum ich interessant bin, wie es richtig funktionieren sollte.

user590536
quelle

Antworten:

3
  1. pkill -KILL -u {username}Sendet es nur SIGKILL an jedes Kind von init --user? und stellt es sicher, dass jeder untergeordnete Prozess sicher getötet wird?

Es sendet SIGKILL an alle Prozesse, die dem {username}Konto gehören, unabhängig von ihrem übergeordneten Element. (Beachten Sie, dass "init --user" etwas distro-spezifisch ist.)

Es ist jedoch ungefähr so ​​weit von "sicher", wie Sie gehen können. SIGKILL ist der Brute-Force-Ansatz, bei dem alle Prozesse beendet werden, ohne dass sie ordnungsgemäß heruntergefahren und bereinigt werden. es ist das Gegenteil von "sicher".

Viele Terminal-basierte Programme reagieren auf SIGHUP als "Line Hangup". Nach einigen Sekunden können die verbleibenden mit SIGTERM gestoppt werden. Nur dann, wenn Sie nach SIGHUP und SIGTERM noch Reste haben, sollten Sie SIGKILL als endgültigen Ansatz verwenden.

  1. Kann man damit Signale senden?

Möglicherweise verstehen die meisten Programme SIGHUP oder SIGTERM. Aber grafische Programme könnten es vorziehen, vom Sitzungsmanager , dh von gnome-session, unter Verwendung von ICE / XSMP angehalten zu werden (ich weiß nicht genau, wie das funktioniert). Im Allgemeinen ist der "sicherste" Ansatz die Verwendung des Abmeldebefehls der Desktop-Umgebung. zum Beispiel:

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
Grawity
quelle
Vielen Dank. Aber noch eine Frage bitte. Was ist der Unterschied zwischen gnome-session-quit und using pkill -KILL - u {username}
?
gnome-session-quitsendet eine IPC-Nachricht an gnome-session, die zuerst die Abmeldung über XSMP ankündigt und dann beendet, sodass der Display-Manager den Xorg-Server herunterfährt.
Grawity
Danke vielmals. Noch eine Bitte: D. Wenn Sie also SIGTERM an init --user senden, kann dies nicht mit dem Problem des Compiz-Absturzes zusammenhängen?
user590536
und welches wird verwendet, wenn sich Linux normalerweise abmeldet?
user590536