สร้างสคริปต์ / แอปให้ออกจากระบบ


13

เราทุกคนรู้ว่า Mac OS X มีฟังก์ชั่นเข้าสู่ระบบที่เป็นประโยชน์ซึ่งช่วยให้คุณสามารถตั้งค่าแอพ / สคริปต์ให้ทำงานเมื่อคุณเข้าสู่ระบบ

ฉันกำลังมองหาวิธีการตั้งค่ารายการสคริปต์ / ปพลิเคชันที่ทำงานเมื่อฉันออกจากระบบ รายการ "รายการออกจากระบบ" ถ้าคุณต้องการ
โดยทั่วไปฉันต้องการเขียนสคริปต์การล้างข้อมูลเล็กน้อยสำหรับตัวเองที่จะทำงานโดยอัตโนมัติเมื่อฉันออกจากระบบหรือปิดตัวลง

ดังนั้นฉันกำลังมองหาวิธีที่จะมีสคริปต์ (หรือโดยเฉพาะอย่างยิ่งรายการของพวกเขา) ทริกเกอร์โดยอัตโนมัติเมื่อฉันออกจากระบบ การออกจากระบบจะรอให้สคริปต์ดำเนินการจนเสร็จสิ้น (เช่นเดียวกับที่การออกจากระบบรอให้คุณคลิกบันทึกหากแอปร้องขอ)

มีวิธีที่จะทริกเกอร์ (a) สคริปต์โดยอัตโนมัติเมื่อฉันออกจากระบบ Mac OS X หรือไม่?


คำตอบ:


7

ตะขอออกจากระบบเลิกใช้แล้วใน 10.4แต่ยังคงใช้ได้ตั้งแต่ 10.9

sudo defaults write com.apple.loginwindow LogoutHook ~/.logouthook
echo $'#!/bin/bash\nsay a' > ~/.logouthook
chmod +x ~/.logouthook

ค่าของคีย์ LogoutHook สามารถเป็นพา ธ ไปยังไฟล์ที่เรียกทำงานได้เท่านั้นไม่ใช่คำสั่งเชลล์ เบ็ดออกจากระบบจะถูกเรียกใช้เป็นราก

คำสั่ง defaults แก้ไข /var/root/Library/Preferences/com.apple.loginwindow.plist การเพิ่มคีย์ LogoutHook ให้กับ /Library/Preferences/com.apple.loginwindow.plist ไม่ทำงาน

หาก hook ออกจากระบบใช้เวลานานพอที่จะเรียกใช้หน้าจอสีเทาจะปรากฏขึ้นจนกว่า hook logout จะสิ้นสุดลง ดูเหมือนจะไม่มีการ จำกัด เวลาหลังจากที่ขอให้ออกจากระบบบังคับให้ยกเลิกการเชื่อมต่อ

ฉันไม่ได้คิดวิธีการเรียกใช้โปรแกรมในการออกจากระบบที่เชื่อถือได้กับ launchd เมื่อฉันพยายามดักสัญญาณเช่น EXIT รหัสในกับดักจะทำงานเฉพาะเมื่อฉันออกจากระบบไปที่หน้าต่างการเข้าสู่ระบบและไม่เมื่อฉันปิดหรือรีสตาร์ท

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>test</string>
  <key>ProgramArguments</key>
  <array>
    <string>bash</string>
    <string>-c</string>
    <string>trap 'echo a>/Users/username/Desktop/a;say a' EXIT;while :;do sleep 10;done</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>

อืมพวกมันไม่เหมาะกับฉันเลย ฉันมีสคริปต์นี้ซึ่งใช้งานได้หากฉันเรียกใช้ด้วยsh(มันสร้างไฟล์. txt นั้น) ฉันบันทึกสคริปต์เป็น /etc/rc.shutdown.local และฉันก็เพิ่มสคริปต์ดังdefaultsที่คุณพูด ไม่มีไฟล์อยู่ที่นั่นแล้ว ฉันกำลังทำอะไรผิดหรือเปล่า? ขอบคุณ!
Nathan Greenstein

ฉันไม่แน่ใจว่าฉันทำอะไรผิดหรือเปล่า ฉันใช้เวลา 10.6.8 และ LogoutHook ไม่ทำงาน ฉันจะขอบคุณถ้าคุณสามารถดูภาพหน้าจอนี้และแจ้งให้เราทราบหากมีบางอย่างผิดปกติ ขอบคุณ!
Nathan Greenstein

1
อา! คนสุดท้ายทำกลโกงบน 10.6.8 ขอบคุณ! One note but: มันใช้งานไม่ได้กับ Lion :(
Nathan Greenstein

2
ทั้งสองวิธีใช้งานได้ดีกับเครื่อง Mountain Lion (10.8.2) ของฉันแม้ว่าจะปิดเครื่องหรือรีบูตก็ตาม โปรดทราบว่า hooksHooks / LogoutHook hooks ทำงานในบริบทของผู้ใช้รูทและพวกเขาเป็นhooks เดียวทั่วทั้งระบบและที่ hook เข้าสู่ระบบทำงานพร้อมกัน - เร็วกว่าเอเจนต์เรียกใช้ต่อผู้ใช้ ในทำนองเดียวกันตะขอออกจากระบบจะทำงานเร็วกว่าเอเจนต์เรียกใช้ต่อผู้ใช้ที่ใช้เมธอด EXIT-trap มีหลายกรณีที่มีเพียงตะขอทำงาน ตัวอย่างเช่นหากคุณต้องการปิดเสียงเมื่อปิดเครื่องเพื่อระงับเสียงเริ่มต้นของ Mac เฉพาะ LogoutHook เท่านั้นที่ทำงานได้อย่างน่าเชื่อถือ
mklement0

1

จริงๆแล้วมีวิธีคือ:

  1. เปิดแอพ "Script Editor"
  2. วาง

do shell script "PUT YOUR START SCRIPT PATH HERE"

on quit
    do shell script "PUT YOUR STOP SCRIPT PATH HERE"
    continue quit
end quit
  1. ไฟล์> บันทึก, เลือกแอปพลิเคชันและเปิดอยู่หลังจากเรียกใช้ตัวจัดการและบันทึก
  2. ค่ากำหนดของระบบ> ผู้ใช้ & กลุ่ม> แท็บรายการเข้าสู่ระบบ> + ปุ่ม
  3. เพิ่มแอปพลิเคชันและทำเครื่องหมายว่าซ่อน

วิธีซ่อนจาก Dock:

  1. คลิกขวาที่แอปพลิเคชั่นแล้วเลือกแสดงเนื้อหาของแพ็คเกจ
  2. เปิด Info.plist และเพิ่ม

<key>NSUIElement</key>
<string>1</string>

รักสิ่งนี้. เรียบง่ายและเพียงพอสำหรับความต้องการของฉัน และไม่คัดค้าน
Ivan X

0

Script Timerเป็นตัวเลือกที่ดีสำหรับสิ่งนี้ สามารถเรียกใช้เมื่อออกจากระบบเข้าสู่ระบบและอื่น ๆ อีกมากมาย ฉันจะไปกับสิ่งนี้เพื่อแก้ปัญหาที่ง่ายและใช้งานง่าย มันมี GUI ง่าย ๆ :

การกระทำที่ถูกเรียก

มีสองสิ่งที่คุณต้องทราบเกี่ยวกับตัวจับเวลาสคริปต์ หนึ่งมันไม่ฟรี มันราคา 12 เหรียญ แต่โดยส่วนตัวแล้วฉันคิดว่ามันคุ้มค่า สองมันเข้ากันไม่ได้กับ Lion อย่างเต็มที่ แต่พวกเขาสัญญาว่าจะอัปเดตฟรีทันทีที่พวกเขาทำให้มันเข้ากันได้


1
นี่เลิกใช้แล้วตอนนี้
Kirtikumar A.

0

คุณสามารถสร้างแอปพลิเคชัน Mac จากสคริปต์ของคุณโดยใช้บางอย่างเช่นPlatypusแล้วเพิ่มลงในรายการเข้าสู่ระบบเช่นแอปพลิเคชันอื่น ๆ


0

Power Managerสามารถเรียกใช้สคริปต์เมื่อผู้ใช้ออกจากระบบ นี่เป็นผลิตภัณฑ์เชิงพาณิชย์และรองรับ macOS ล่าสุด

Power Manager รันสคริปต์เมื่อออกจากระบบ Schedule Assistant

เวอร์ชันก่อนหน้านี้จำเป็นต้องใช้ตัวแก้ไขเหตุการณ์แต่ตอนนี้มีการรวมงาน Schedule Assistant สำหรับการเรียกใช้สคริปต์เมื่อเข้าสู่ระบบและออก

ฉันเขียน Power Manager ดังนั้นโปรดถามคำถามทางเทคนิคเกี่ยวกับการใช้งาน ในกรณีที่มีการออกจากระบบเหตุการณ์ที่เกิดขึ้น Power Manager จะไม่ทำการสำรวจความเปลี่ยนแปลงในสถานะผู้ใช้ แต่จะได้รับแจ้งจากการเปลี่ยนแปลงของผู้ใช้โดย macOS แทน วิธีนี้มีประสิทธิภาพมากกว่าที่มีการวนลูป / โพลสคริปต์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.