ฉันต้องการออกจากระบบปฏิบัติการ Mac OS X จากบรรทัดคำสั่ง เวอร์ชั่น OS X ของฉันคือ 10.9 ฉันลองใช้คำสั่งpkill -KILL -u uid
แต่คำสั่งนี้ไม่ได้ผล มีคำสั่งที่สามารถใช้เพื่อล็อกเอาต์ผู้ใช้จากระบบโดยใช้บรรทัดคำสั่งเท่านั้นไม่ใช่AppleScriptหรือไม่?
ฉันต้องการออกจากระบบปฏิบัติการ Mac OS X จากบรรทัดคำสั่ง เวอร์ชั่น OS X ของฉันคือ 10.9 ฉันลองใช้คำสั่งpkill -KILL -u uid
แต่คำสั่งนี้ไม่ได้ผล มีคำสั่งที่สามารถใช้เพื่อล็อกเอาต์ผู้ใช้จากระบบโดยใช้บรรทัดคำสั่งเท่านั้นไม่ใช่AppleScriptหรือไม่?
คำตอบ:
sudo launchctl bootout gui/$(id -u <username>)
หรือ
sudo launchctl bootout user/$(id -u <username>)
แทนที่ชื่อผู้ใช้ด้วยชื่อผู้ใช้ของผู้ใช้เป้าหมายหรือแทนที่ทั้ง subshell ด้วย uid ของผู้ใช้ สิ่งนี้บอกให้ Launchctl ฉีกเซสชั่นการล็อกอินของผู้ใช้ (gui หมายถึงเซสชั่นการล็อกอินชั่วคราวของผู้ใช้ผู้ใช้ระบุกระบวนการพื้นหลังของผู้ใช้)
คุณสามารถออกจากระบบได้โดยไม่ต้องsudo
ทดสอบ
โปรดทราบว่านี่จะทำงานได้กับ macOS 10.11.x หรือใหม่กว่าเท่านั้น (ดูlaunchctl help
เพิ่มเติม)
หากต้องการออกจากระบบหมดจดจากเทอร์มินัล (หรือเซสชัน ssh จากระยะไกล) เพียงแค่ฆ่ากระบวนการ loginwindow:
sudo pkill loginwindow
คุณสามารถจินตนาการและระบุผู้ใช้หากผู้ใช้หลายคนมีกระบวนการเข้าสู่ระบบการเรียกใช้งาน แต่นี่เป็นวิธีที่ง่ายเพียงวิธีเดียวไม่มีวิธีที่รวดเร็วในการสิ้นสุดเซสชันกราฟิกของผู้ใช้
สิ่งนี้ได้ผลสำหรับฉันในอดีต:
ออกจากระบบ (พร้อมการยืนยัน)
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»'
วิธีนี้แอปพลิเคชันใด ๆ ที่ทำงานอยู่จะถูกสังเกตเห็นและสามารถยุติได้อย่างปลอดภัย
หากคุณมีผู้ใช้หลายคน ....
ค้นหา ID กระบวนการด้วย:
ps aux|grep login
จากนั้นจึงฆ่ากระบวนการนั้นและคุณออกจากเซสชันนั้น แต่มีจำนวนมากที่เหลืออยู่ procceses
ตรวจสอบกับpstree
คุณเพื่อให้ทราบว่ากระบวนการใดที่จะยุติ
นี่เป็นกลอุบายของฉัน
sudo -s
หากต้องการรับสิทธิ์ใช้งานรูทและพรอมต์ # จากนั้นจึงฆ่ากระบวนการ
killall -vu username -HUP
และถ้ามันไม่ได้หายไปทั้งหมด Nuke em! คำเตือนภาระหน้าที่ - การฆ่าสิ่งต่าง ๆ ในฐานะที่เป็น root ไม่มีการเลิกทำและไม่ใช่ "คุณแน่ใจหรือไม่ว่าคุณต้องการขัดจังหวะกระบวนการนี้โดยไม่บันทึกไฟล์ของคุณรวมถึงฐานข้อมูลที่สำคัญของระบบที่อาจทำให้เครื่อง คำเตือนประเภท
killall -vu username -9
ยูทิลิตี้ที่ดีในการเพิ่มเทอร์มินัลของคุณคือคำสั่ง "ออกจากระบบ" ที่จะใช้เช่น:
logout UserName
นี่คือวิธีการ:
แก้ไข. bash_profile ของคุณ
nano ~/.bash_profile
เพิ่มบรรทัดนี้:
logout() {sudo launchctl bootout user/$(id -u "$1")}
บันทึกไฟล์กด ctrl+x
รีสตาร์ทเครื่อง
คุณพร้อมที่จะไป;)
หากคุณเข้าสู่ระบบด้วย ssh ไปยังคอมพิวเตอร์ระยะไกลคุณสามารถออกจากระบบโดยเพียงพิมพ์ 'exit':
[host:~user]$ exit