मेरे पास एक AppleScript या ऐप्पलस्क्रिप्ट का सेट है जिसे मैं एक LaunchDaemon के रूप में चलाने की कोशिश कर रहा हूं। मुझे अपने उपयोगकर्ता के साथ लॉन्चडैम चलाने में कोई समस्या नहीं है। समस्या यह आती है कि मुझे एक फ़ाइल पढ़ने की आवश्यकता है जो केवल रूट द्वारा पठनीय है, यह सुरक्षा कारणों से डिज़ाइन के अनुसार है क्योंकि फ़ाइल में संवेदनशील जानकारी है।
मैंने आवश्यक precompiled AppleScript फ़ाइलें, .scpt फ़ाइलें, में स्थापित की हैं:
/Library/Scripts/myApplication/
मैंने अपनी मुट्ठी नीचे रख दी है:
/Library/LaunchDaemons
संपादित करें: यहाँ मेरे डेमन के लिए अभियोग है:
<?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>com.mycompany.myapp.service</string>
<key>KeepAlive</key>
<true/>
<key>RunAtLoad</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/osascript</string>
<string>/Library/Scripts/myApp/myApp.scpt</string>
</array>
</dict>
अब, जब मैं लॉन्चक्टल और सुडो का उपयोग करके पौधों को लोड करने की कोशिश करता हूं
sudo launchctl load -w /Library/LaunchDaemons/com.mycompany.myapp.service.plist
मुझे systemlog.log में त्रुटियाँ मिलती हैं:
Aug 26 17:54:13 computername com.apple.xpc.launchd[1] (com.mycompany.myapp.service[74757]): Service exited with abnormal code: 1
Aug 26 17:54:13 computername com.apple.xpc.launchd[1] (com.mycompany.myapp.service): Service only ran for 0 seconds. Pushing respawn out by 10 seconds.
हालाँकि, अगर मैं लॉन्च कमांड से "sudo" छोड़ता हूं तो यह पूरी तरह से काम करता है। मैंने मूल उपयोगकर्ता के रूप में टर्मिनल से स्क्रिप्ट चलाने की भी कोशिश की है, जो ठीक भी काम करता है। हालांकि, जैसे ही मैं उन्हें लॉन्चक्टल और सूडो के साथ लोड करने की कोशिश करता हूं, सब कुछ मर जाता है।
इस स्क्रिप्ट को पहले से चलाने के लिए मुझे मशीन पर स्क्रिप्ट एक्सेसिबिलिटी विशेषाधिकारों को चलाने वाले एप्लिकेशन को देना था, इसलिए पहले वाला सबलाइम टेक्स्ट 2, टर्मिनल और स्क्रिप्ट एडिटर। मैं अनुमान लगा रहा हूं कि यह किस कारण से स्क्रिप्ट नहीं चल रही है, लेकिन मुझे पता नहीं है कि सुलभता के तहत सक्षम करने के लिए कौन सा प्रोग्राम है, क्योंकि मुझे संकेत नहीं दिया जा रहा है। तो जिस तरह से मुझे इसकी आवश्यकता है उसे चलाने के लिए मुझे यह स्क्रिप्ट कैसे मिलेगी?