मुझे लॉगिन के दौरान अतिथि खाते के लिए स्क्रिप्ट निष्पादित करने का एक तरीका नहीं मिला, जो हर मिनट में निष्पादित होता है। वे कहते हैं कि क्रोन डेमॉन का उपयोग करना पदावनत है इसलिए ऐसा लगता है कि मैं .plist फ़ाइलों के साथ लॉन्चड का उपयोग करूंगा।
परिदृश्य: मेरे पास एक सार्वजनिक आईमैक है जिसे मैं आम जनता को अतिथि खाते का उपयोग करने की अनुमति देना चाहता हूं और यह हर आधे घंटे में लॉग आउट करने के लिए मजबूर करता है। मैंने लॉगिन समय की जांच करने और शेष समय का पता लगाने के लिए एक रूबी स्क्रिप्ट लिखी। मेरे पास ऑसस्क्रिप्ट का उपयोग करके हर 10 मिनट में एक बैनर अधिसूचना प्रदर्शित हो सकती है और फिर इसे मेरे खाते से लॉग इन कर सकते हैं। समस्या यह है कि जब मैं इसे काम नहीं करता अतिथि खाते के लिए इसे लागू करने की कोशिश।
समस्या तब है जब मैं .plist फ़ाइल को अंदर / लाइब्रेरी / LaunchDaemons में रख रहा हूं क्योंकि यह लॉगिन के बाद चलता है और रूट के रूप में भी चलता है। रूट के रूप में चलना महत्वपूर्ण है क्योंकि जब समय समाप्त होता है तो प्रक्रियाओं को बंद करने का विशेषाधिकार हो सकता है। मुझे इसे हर मिनट में एक बार निष्पादित करने की आवश्यकता है। यह वर्तमान प्लिस्ट फ़ाइल है जो तब काम करती है जब मैं अपने स्वयं के उपयोगकर्ता नाम "स्वामी" के रूप में लॉगिन करता हूं, लेकिन अतिथि नहीं। Org.user.plist का उपयोग करना
मेरी मूल .plist फ़ाइल कुछ इस तरह दिखती थी
<?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>org.user</string>
<key>Program</key>
<string>/usr/local/bin/notify-custom</string>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
अद्यतन 1 (अभी तक कोई समाधान नहीं) .plist फ़ाइल जो अतिथि और मेरे उपयोगकर्ता नाम दोनों के लिए प्रत्येक 10 सेकंड चलती है
<?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>org.user</string>
<key>ProgramArguments</key>
<string>/usr/local/bin/notify-custom</string>
<key>WatchPaths</key>
<array>
<string>/Users/Guest/Library</string>
<string>/Users/owner/Library</string>
<array>
</integer>
</dict>
</plist>
परीक्षण के रूप में यह सुनिश्चित करने के लिए कि ऑसस्क्रिप्ट नोटिफिकेशन बैनर पॉप अप करता है, मेरे पास यह कोड है / usr / लोकल / बिन / नोटिफाइड-कस्टम
#/bin/bash
#Using whoami would have shown me logged in as root under LaunchDaemon .plist
loggedinUser=`finger | awk 'NR==3{print $1}'`
#I need to manually run terminal and type sudo as guest for nextline to work
sudo -u $loggedinUser /usr/bin/osascript -e 'display notification "Test" with title "Banner Notification"'
समाधान नीचे है।
notify-custom
और यह एक द्विआधारी या एक स्क्रिप्ट है, और यदि बाद में स्क्रिप्ट की सामग्री क्या है?
root
में wheel
साथ समूह 0644
में अनुमतियों के लिए /Library/LaunchAgents
और जब अतिथि के रूप में लॉग-इन यह भाग गया। प्रोग्राम कुंजी के लिए स्ट्रिंग के अपवाद के साथ शेष फ़ाइल समान थी। यह उम्मीद के मुताबिक काम किया। मैं एक ही स्थान पर अन्य LaunchAgents को भी देखता हूं और गतिविधि मॉनिटर में उनकी प्रक्रियाओं को भी शुरू कर रहा हूं। तो यह जाने बिना कि इसकी सामग्री क्या है और इसके अलावा, मैं इस समय अन्य पेशकश करने के लिए प्रस्ताव कर सकता हूं । अतिथि खाते में काम करने वाली फाइलें । notify-custom
/Library/LaunchAgents