ฉันได้รับความสนใจในการใช้ Terminal มากขึ้นเป็นอีกทางเลือกหนึ่งในการแก้ไขปัญหาบน Mac ของฉัน ฉันเคยเห็นคำถามนี้เรื่อง"มีวิธีที่ดีกว่าในการปิด / รีสตาร์ท OSX หรือไม่?" .
ฉันอยากรู้ว่า:
วิธีการปิดรีสตาร์ทและสลีป Mac ของฉันโดยใช้คำสั่งเทอร์มินัลโดยเฉพาะ?
ฉันได้รับความสนใจในการใช้ Terminal มากขึ้นเป็นอีกทางเลือกหนึ่งในการแก้ไขปัญหาบน Mac ของฉัน ฉันเคยเห็นคำถามนี้เรื่อง"มีวิธีที่ดีกว่าในการปิด / รีสตาร์ท OSX หรือไม่?" .
ฉันอยากรู้ว่า:
วิธีการปิดรีสตาร์ทและสลีป Mac ของฉันโดยใช้คำสั่งเทอร์มินัลโดยเฉพาะ?
คำตอบ:
คำสั่งที่คุณเป็นหลังจากปิดตัวลง สิ่งนี้จะแจ้งให้ผู้ใช้ทุกคนทราบว่าเครื่องกำลังจะปิดและบอกให้แอปทั้งหมดปิดไฟล์ ฯลฯ
คำสั่งใช้พารามิเตอร์ -h, -r หรือ -s เพื่อปิดรีสตาร์ทหรือสลีป Mac
คำสั่งจะต้องถูกเรียกใช้ในฐานะรูทดังนั้นคุณต้องใช้ sudo
เช่นรีบูตเครื่องทันที
sudo shutdown -r now
เช่นเพื่อปิดเครื่องใน 60 นาที
sudo shutdown -h +60
จากความคิดเห็นมีสองสิ่งที่ต้องแก้ไข
วิธีการปิดการทำงานคือการส่ง sigterm ไปยังกระบวนการทั้งหมดซึ่งควรจัดการกับสิ่งนั้นเช่นบันทึกไฟล์ที่เปิดเป็นต้นหากไม่ออกจากนั้นพวกเขาจะได้รับ SIGKILL ซึ่งบังคับให้พวกเขาตายโดยไม่มีโอกาสตอบกลับ สัญญาณจะไม่ถูกส่งผ่านคิวข้อความคีย์ปกติดังนั้นแอปจะต้องจัดการกับสิ่งนี้แยกจากกันกับรหัสที่ถูกเรียกจากออกจากเมนู แอปที่ดีควรเรียกใช้รหัสทั่วไปจากทั้งคู่
คำตอบอื่น ๆนี้แสดงวิธีการปิดราวกับว่าคุณกดตัวเลือกเมนู แต่โปรดทราบว่าแอพสามารถยกเลิกการปิดเครื่องนี้ได้
/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspendWindows: ฉันมีมัน aliased ในแฟ้มที่มีที่มาใน .bash_profile ของฉันดังนี้alias lock='/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend'
ปิดเครื่องโดยไม่แสดงข้อความยืนยัน:
osascript -e 'tell app "System Events" to shut down'
ปิดตัวลงหลังจากแสดงกล่องโต้ตอบการยืนยัน:
osascript -e 'tell app "loginwindow" to «event aevtrsdn»'
รีสตาร์ทโดยไม่แสดงกล่องโต้ตอบการยืนยัน:
osascript -e 'tell app "System Events" to restart'
รีสตาร์ทหลังจากแสดงกล่องโต้ตอบการยืนยัน:
osascript -e 'tell app "loginwindow" to «event aevtrrst»'
ออกจากระบบโดยไม่แสดงข้อความยืนยัน:
osascript -e 'tell app "System Events" to «event aevtrlgo»'
ออกจากระบบหลังจากแสดงกล่องโต้ตอบการยืนยัน:
osascript -e 'tell app "System Events" to log out'
ไปนอน ( pmset):
pmset sleepnow
ไปที่โหมดสลีป (AppleScript):
osascript -e 'tell app "System Events" to sleep'
นำจอแสดงผลเข้าสู่โหมดสลีป (10.9 ขึ้นไป):
pmset displaysleepnow
AERegistry.hสี่รหัสตัวอักษรสำหรับเหตุการณ์ที่แอปเปิ้ลมีการระบุไว้ใน
คำสั่งกิจกรรมระบบทั้งหมดข้างต้นส่งกิจกรรม Apple ไปที่loginwindowกระบวนการ loginwindowจะถูกส่งเหตุการณ์ Apple เดียวกันกับด้านบนเมื่อคุณออกจากระบบรีสตาร์ทปิดเครื่องหรือทำให้ Mac เข้าสู่โหมดสลีปตามปกติ ดูเทคนิคถาม & ตอบ QA1134: ทำให้เกิดการรีสตาร์ทปิดและ / หรือออกจากระบบโดยทางโปรแกรม
ตามที่man shutdown, shutdown -h nowและshutdown -r nowส่งกระบวนการTERMสัญญาณตามด้วยKILLสัญญาณ
ตามDaemons และคู่มือการเขียนโปรแกรมบริการเมื่อคุณบอกloginwindowให้ออกจากระบบกระบวนการที่สนับสนุนการเลิกจ้างกระทันหันจะส่งKILLสัญญาณและกระบวนการที่ไม่สนับสนุนการเลิกจ้างกะทันหันถูกยกเลิกในรูปแบบที่แตกต่างกัน: แอปพลิเคชัน Cocoa ได้รับapplicationShouldTerminate:วิธีผู้แทน รับkAEQuitApplicationเหตุการณ์ Apple แอปพลิเคชันพื้นหลังรับkAEQuitApplicationเหตุการณ์ Apple ตามด้วยKILLสัญญาณและ daemons จะรับTERMสัญญาณตามด้วยKILLสัญญาณหลังจากนั้นไม่กี่วินาที
ปิดเครื่องทันที:
**sudo shutdown -h now**
หากคุณรู้สึกว่าการหน่วงเวลาในการปิดระบบคุณสามารถใช้ไวยากรณ์คำสั่งต่อไปนี้แทน:
**sudo shutdown -h +30**
(-h พารามิเตอร์กำหนดเวลาปิดระบบโดยที่ (+) 30 นาทีเพื่อหยุดระบบ)
ยังมีประโยชน์ในการออกจากระบบพรอมต์บรรทัดคำสั่ง terminal พิมพ์ 'exit':
[host:~user]$ exit
Ctrl-Dออกจากระบบเนื่องจากไม่ได้ทำให้ประวัติบรรทัดคำสั่งหมดไป