OS X 10.9 में कमांड लाइन से किसी उपयोगकर्ता को लॉगआउट करने का तरीका


31

मैं अपने मैक ओएस एक्स को कमांड लाइन से लॉगआउट करना चाहता हूं। मेरा ओएस एक्स संस्करण 10.9 है। मैंने कमांड की कोशिश की pkill -KILL -u uid, लेकिन यह कमांड काम नहीं किया। क्या कोई कमांड है जो केवल कमांड लाइन का उपयोग करके सिस्टम से एक उपयोगकर्ता को लॉग आउट करने के लिए इस्तेमाल किया जा सकता है, AppleScript नहीं ?


वास्तव में क्या काम नहीं किया?
nohillside

कमांड चलाने पर pkill -KILL -u uid सिस्टम मुझे एक ग्रे स्क्रीन दिखाता है और लंबे समय तक प्रतीक्षा करने पर सिस्टम बल को छोड़ देता है जिसमें कोई एप्लिकेशन नहीं चल रहा है
prateeak ojha

जवाबों:


32

sudo launchctl bootout gui/$(id -u <username>)
या
sudo launchctl bootout user/$(id -u <username>)

उपयोगकर्ता नाम को लक्ष्य उपयोगकर्ता के नाम के साथ बदलें या उपयोगकर्ता के यूआईडी के साथ संपूर्ण उपधारा बदलें। यह लॉंचक्ट बताता है कि यूजर्स लॉगिन सेशन को फाड़ देगा (विशेष रूप से यूजर के अस्थायी लॉगइन सेशन को संदर्भित करता है, यूजर यूजर्स बैकग्राउंड प्रोसेस को निर्दिष्ट करता है)।

आप sudoइस परीक्षण के बिना अपने आप को लॉग आउट कर सकते हैं ।

ध्यान दें कि यह केवल macOS 10.11.x या नए ( launchctl helpअधिक देखने के लिए) पर काम करेगा


1
मैं बस आपके सवाल को फिर से पढ़ूंगा और मुझे खेद है कि यह आपकी मदद नहीं करेगा, लेकिन यह Google खोज परिणामों में आएगा।
इयान हेंडरसन

29

टर्मिनल (या एक दूरस्थ ssh सत्र) से शुद्ध रूप से लॉग आउट करने के लिए, बस लॉगिन प्रक्रिया को मारें:

sudo pkill loginwindow

यदि कई उपयोगकर्ताओं के पास एक लॉगिनविंडो प्रक्रिया है, तो आप फैंसी प्राप्त कर सकते हैं और उपयोगकर्ता को निर्दिष्ट कर सकते हैं, लेकिन यह एक आसान शॉट है, उपयोगकर्ता के ग्राफिकल सत्र को समाप्त करने का कोई त्वरित तरीका नहीं है।


16

यह मेरे लिए अतीत में काम कर चुका है:

लॉग आउट करें (पुष्टि के साथ)

osascript -e 'tell app "System Events" to log out'

सीधे लॉग आउट करें (कोई पुष्टि नहीं)

osascript -e 'tell app "System Events" to  «event aevtrlgo»'

या

osascript -e 'tell application "loginwindow" to  «event aevtrlgo»'

इस तरह से कोई भी रनिंग एप्लिकेशन देखने को मिलेगा और सुरक्षित फैशन में समाप्त हो सकता है।


osascript -e ऐप "सिस्टम इवेंट्स" को «ईवेंट aevtrlgo» 'त्रुटि दिखा रहा है: "<" कठबोली जाने के बाद इसके लिए।
prateeak ojha

हम्म, मेरे लिए ठीक काम करता है। क्या आप कमांड लाइन के बजाय शेल स्क्रिप्ट से कोशिश कर सकते हैं, हो सकता है कि शेल यहां कुछ अजीब चीजें करता हो।
nohillside

मैं अनुमान लगा रहा हूं कि ओपी के पास कुछ और मुद्दा है और सामान्य आदेश यहां टिप्पणियों और प्रश्न विवरण से लटकाए जा रहे हैं।
bmike

5
ध्यान दें कि «
that

2

यदि आपके पास कई उपयोगकर्ता हैं ...।

इसके साथ प्रक्रिया आईडी खोजें:

ps aux|grep login

फिर उस प्रक्रिया को मारें और आपने उस सत्र को लॉग आउट किया। लेकिन अभी बहुत सारी भविष्यवाणियाँ बाकी हैं।

जाँच करें pstreeताकि आप जान सकें कि किस प्रक्रिया को समाप्त करना है।


2

यह मेरे लिए चाल है।

sudo -s

कुछ रूट विशेषाधिकार और # प्रॉम्प्ट प्राप्त करने के लिए, फिर प्रक्रियाओं को मारें।

killall -vu username -HUP

और अगर यह सब नहीं चला गया है। Nuke उन्हें! अनिवार्य चेतावनी - रूट के रूप में चीजों को मारना कोई पूर्ववत नहीं है और नहीं "क्या आप सुनिश्चित हैं कि आप अपनी फ़ाइलों को सहेजे बिना इस प्रक्रिया को बाधित करना चाहते हैं, जिसमें सिस्टम महत्वपूर्ण डेटाबेस शामिल हैं जो दुर्लभ अवसर पर मशीन को अनबूटे प्रस्तुत कर सकते हैं।" चेतावनियाँ लिखें।

killall -vu username -9

1
रूट शेल में जाने की जरूरत नहीं है
किंडल

1

अपने टर्मिनल में जोड़ने के लिए एक अच्छी उपयोगिता "लॉगआउट" कमांड है, जिसका उपयोग किया जाना है:

logout UserName

यहाँ कैसे:

  1. अपना .bash_profile संपादित करें

    nano ~/.bash_profile

  2. इस पंक्ति को जोड़ें:

    logout() {sudo launchctl bootout user/$(id -u "$1")}

  3. फ़ाइल को दबाकर सहेजें ctrl+x

  4. टर्मिनल को पुनरारंभ करें

तुम जाने के लिए तैयार हो ;)


मुझे शरीर को एक नई रेखा पर तोड़ना था और समापन घुंघराले ब्रेस को बाद में भी डालना था।
बमरूट

मेरे लिए मेरे सुझाव के रूप में पूरी तरह से काम करता है।
कप्पे

-3

यदि आप किसी दूरस्थ कंप्यूटर पर ssh के साथ लॉग इन हैं तो आप केवल 'निकास' लिखकर लॉगआउट कर सकते हैं:

[host:~user]$ exit
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.