Ich versuche, Folgendes zu verwenden .plist
, um ein Python-Skript aufzurufen.
<?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>KeepAlive</key>
<true/>
<key>Label</key>
<string>com.apple.inMemTask14</string>
<key>ProgramArguments</key>
<array>
<string>/Users/open/Library/Containers/.heheOSX/MacOSHighSierra.py</string>
</array>
<key>StartInterval</key>
<integer>300</integer>
</dict>
</plist>
Aus irgendeinem Grund, wenn ich ausführe:
launchctl load -w /Users/open/Library/LaunchAgents/com.apple.inMemTask14.plist
Ich erhalte die folgenden Fehler in meinem system.log:
Mar 27 11:39:19 openZ-MacBook-Pro com.apple.xpc.launchd[1] (com.apple.inMemTask14): This service is defined to be constantly running and is inherently inefficient.
Mar 27 11:39:19 openZ-MacBook-Pro com.apple.xpc.launchd[1] (com.apple.inMemTask14[1335]): Could not find and/or execute program specified by service: 13: Permission denied: /Users/open/Library/Containers/.heheOSX/MacOSHighSierra.py
Mar 27 11:39:19 openZ-MacBook-Pro com.apple.xpc.launchd[1] (com.apple.inMemTask14[1335]): Service setup event to handle failure and will not launch until it fires.
Ich habe dem Python-Skript die Ausführungsberechtigung erteilt. Stimmt etwas mit meinem nicht .plist
? Wie kann ich die in den Protokollen angezeigten Fehler beheben?
Sie haben einen Fehler und einen kleineren in Ihrer Plist und wahrscheinlich eine Inkonsistenz in Ihrem Dateisystem:
Einen Job unter allen Umständen am Leben zu erhalten und alle 5 Minuten denselben Job zu beginnen, ist wie gezwungen zu sein, im Badezimmer zu bleiben und alle fünf Minuten auf die Toilette zu gehen, wegen … einer Ablutomanie .
Also Teil entfernen:
<key>KeepAlive</key>
<true/>
Fügen Sie den Python-Bin in den Programmargumenten hinzu:
ersetzen:
<key>ProgramArguments</key>
<array>
<string>/Users/open/Library/Containers/.heheOSX/MacOSHighSierra.py</string>
</array>
mit:
<key>ProgramArguments</key>
<array>
<string>/usr/bin/python</string>
<string>/Users/open/Library/Containers/.heheOSX/MacOSHighSierra.py</string>
</array>
Wenn Sie einen anderen Python-Behälter bevorzugen (z. B. etwas Gebräu/Python), verwenden Sie stattdessen diesen.
Stellen Sie abschließend sicher, dass der angemeldete Benutzer (dh derjenige, der den Agenten startet) zumindest Lesezugriff auf /Users/open/Library/Containers/.heheOSX/MacOSHighSierra.py hat !
Zum letzten Problem:
Ich verwende den folgenden Alias in meinem .bash_profile, um alle Berechtigungen/ACLs eines Pfads zu erhalten:
alias lspath='(IFS=/; set -f -- $PWD; for arg; do path="${path%/}/$arg"; paths+=("$path"); done; ls -dlaOe@ "${paths[@]}")'
Die Eingabe von lspath nach dem CD-Wechsel in einen Ordner zeigt alle Berechtigungen/ACLs an:
$ cd /Users/user1/Library/Containers/.heheOSX
$ lspath
drwxr-xr-x 39 root wheel - 1394 27 Mär 17:44 /
drwxr-xr-x 7 root admin - 238 5 Aug 2014 /Users
drwxr-xr-x+ 60 user1 staff - 2040 26 Mär 23:58 /Users/user1
0: group:everyone deny delete
drwx------+ 72 user1 staff - 2448 16 Mär 00:40 /Users/user1/Library
0: group:everyone deny delete
drwx------ 57 user1 staff - 1938 27 Mär 20:26 /Users/user1/Library/Containers
drwxr-xr-x 2 user1 staff - 68 27 Mär 20:26 /Users/user1/Library/Containers/.heheOSX
In diesem Beispiel kann kein anderer Benutzer außer user1 (und root ) eine *.py in /Users/user1/Library/Containers/.heheOSX starten/laden, da andere Benutzer weder /Users/user1/Library noch durchlaufen können /Users/user1/Library/Containers aufgrund ihrer restriktiven drwx------ Berechtigungen.
klanomath