Kullanıcıları kapatmak için bu fonksiyonla geldim (en alta bakınız)
Varsayılır
- sudo izinlerine sahipsin
- bash var
- kullanıcıların 1 çalışan X oturumu vardır (kalan oturumlardan kurtulmak için aynı oturum kapatma komutunu birkaç kez verebilmeniz gerekir)
Birden çok kullanıcı adı verebilirsiniz:
logout john jane mike elisa
Ve ek seçenekler de verebilirsiniz:
logout john --force
Yani, aşağıdaki yardımcı işlevi var:
function forcelogout() {
logout "$@" --no-prompt --force
}
Notlar:
- Bu kör bir enstrümandır ve tüm oturum ortamını kopyalayarak çalışır. Bu daha seçici olabilir.
- Bazen çıkış biraz zaman alıyor gibi görünüyor.
- Nadir durumlarda, oturum oturumun koştuğu vt'yi ziyaret edene kadar oturum rapor edilir, ancak artık hiçbir şey yoktur)
KOD
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
çalışan tüm programları durduracak. (Programları durdurmadan GUI'yi nasıl yeniden başlatacağımı hâlâ bilmiyorum.)