मैं उपयोगकर्ताओं को लॉगआउट करने के लिए इस फ़ंक्शन के साथ आया था (नीचे देखें)
यह मान लेता है
- आपके पास sudo अनुमतियां हैं
- आपको बैश है
- उपयोगकर्ताओं के पास 1 एक्स रनिंग सत्र है (हालांकि आपको शेष सत्रों से छुटकारा पाने के लिए एक ही लॉगआउट कमांड को कई बार जारी करने में सक्षम होना चाहिए)
आप इसे कई उपयोगकर्ता नाम दे सकते हैं:
logout john jane mike elisa
और आप इसे अतिरिक्त विकल्प दे सकते हैं:
logout john --force
तो, मेरे पास निम्न सहायक कार्य है:
function forcelogout() {
logout "$@" --no-prompt --force
}
टिप्पणियाँ:
- यह एक कुंद यंत्र है और पूरे सत्र के वातावरण को कॉपी करके काम करता है। यह अधिक चयनात्मक हो सकता है।
- कभी-कभी लॉगआउट करने में कुछ समय लगता है
- दुर्लभ मौकों में सत्र की सूचना तब तक मिलती रहती है जब तक कि कोई व्यक्ति सत्र में भाग नहीं ले जाता है, लेकिन वहां कुछ भी नहीं है)
कोड
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
सभी चल रहे कार्यक्रमों को रोक देगा। (मैं अभी भी नहीं जानता कि कैसे कार्यक्रमों को रोकने के बिना जीयूआई को फिर से शुरू करना है।)