Я придумав цю функцію для виходу з користувачів (див. Внизу)
Це передбачає
- у вас є дозволи на судо
- у вас баш
- у користувачів 1 сеанс X, що працює (хоча ви повинні мати змогу видавати одну і ту ж команду виходу, щоб позбутися від інших сеансів)
Ви можете надати йому кілька імен користувачів:
logout john jane mike elisa
І ви можете дати їй додаткові варіанти:
logout john --force
Отже, у мене є така помічна функція:
function forcelogout() {
logout "$@" --no-prompt --force
}
Примітки:
- Це тупі інструменти і працює, просто копіюючи все середовище сеансу. Це може бути більш вибірково.
- Іноді вихід, схоже, потребує певного часу
- У рідкісних випадках про сеанс повідомляється, поки хтось не відвідає vt, де проходив сеанс, але нічого там більше немає)
КОД
function logout() {
local USERNAME
export USERNAMES=( )
while [ -n "$1" ]; do case "$1" in
-* ) break ;;
*) USERNAMES+=( "$1" ); shift ;;
esac; done
for USERNAME in "${USERNAMES[@]}"; do
local SESSION_PID=$(pgrep -fu "$USERNAME" gnome-session|head -1)
if [ -n "$SESSION_PID" ]; then
(
sudo -u "$USERNAME" cat "/proc/$SESSION_PID/environ" | xargs -0 -n 1 echo export
echo "gnome-session-quit --logout $@"
) | sudo -u "$USERNAME" sh -;
fi
done
}
restart
зупинить усі запущені програми. (Я досі не знаю, як перезапустити графічний інтерфейс, не зупиняючи програми.)