Saya datang dengan fungsi ini untuk keluar pengguna (lihat di bagian bawah)
Diasumsikan
- Anda memiliki izin sudo
- kamu punya bash
- pengguna memiliki 1 sesi X berjalan (meskipun Anda harus dapat mengeluarkan perintah logout yang sama beberapa kali untuk menghilangkan sesi yang tersisa)
Anda dapat memberikan beberapa nama pengguna:
logout john jane mike elisa
Dan Anda bisa memberikannya opsi tambahan:
logout john --force
Jadi, saya memiliki fungsi pembantu berikut:
function forcelogout() {
logout "$@" --no-prompt --force
}
Catatan:
- Ini adalah instrumen tumpul dan berfungsi hanya dengan menyalin seluruh lingkungan sesi. Ini bisa lebih selektif.
- Terkadang logout sepertinya memakan waktu cukup lama
- Dalam kesempatan yang jarang, sesi terus dilaporkan sampai seseorang mengunjungi vt di mana sesi berjalan, tetapi tidak ada yang ada lagi)
KODE
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
akan menghentikan semua program yang sedang berjalan. (Saya masih tidak tahu cara me-restart GUI tanpa menghentikan program.)