Ich habe den folgenden Befehl launchctl als .plist-Datei. Es wird geladen und ist so eingestellt, dass es einmal am Tag ausgeführt wird. Es muss jedoch als Root ausgeführt werden, und ich bin nicht sicher, wie ich das überprüfen soll.
Dieser Cron-Job wird grundsätzlich in ein Verzeichnis kopiert und führt einen Befehl aus. Ich bin sicher, dass launchd das Verzeichnis, in dem der Befehl ausgeführt werden soll, besser spezifizieren kann.
Woher weiß ich, dass es als root ausgeführt wird und gibt es eine bessere Möglichkeit, dies zu schreiben?
<?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>dev.project.frontpage.feedparser</string>
<key>ProgramArguments</key>
<array>
<string>cd</string>
<string>/Users/eman/src/project/trunk/includes/;</string>
<string>./feed-parser.php</string>
<string>-c</string>
<string>./feed-parser-config.xml</string>
</array>
<key>QueueDirectories</key>
<array/>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>12</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
<key>WatchPaths</key>
<array/>
</dict>
</plist>
launchctl
für Neulinge: Wird Laufen für die Installation eines Daemons benötigt? Ich meine, reicht es nicht aus, die plist-Datei in den entsprechenden Pfad zu kopieren?Haben Sie versucht, einen der launchd-Editoren zu verwenden?
Um sicherzustellen, dass es als root ausgeführt wird, bin ich mir ziemlich sicher, dass launchd die Programme als root ausführen wird. Haben Sie jemals darüber nachgedacht, den Besitz des Skripts mit chmod an root zu übertragen? Auf diese Weise wird es nur ausgeführt, wenn es als root ausgeführt wird. Sie müssen dann überprüfen, ob es ausgeführt wird.
quelle
Eigenschaftslisten in LaunchAgents funktionieren auch, aber Sie müssen sowohl Agenten als auch Daemons mit sudo laden:
Wenn die plist keinen deaktivierten Schlüssel hat, wird dieser standardmäßig beim nächsten Anmelden oder Neustart geladen und
-w
ist nicht erforderlich.Technischer Hinweis TN2083: Daemons und Agenten :
quelle
Für Googler eine Einführung speziell laufen suchen Agenten mit Root - Rechten intead eines Auflegungs Daemon kann erfolgen durch:
~/Library/LaunchAgents
sudo
über dieProgramArguments
Eigenschaft in Ihrer Liste ausNOPASSWD
Option für Ihre Anwendung in ein/etc/resolvers.d
Weitere Informationen finden Sie in dieser und dieser Antwort.
quelle
LaunchControl hat es mir in Yosemite leicht gemacht. Es verfügt über eine schöne Drag-and-Drop-Benutzeroberfläche, mit der Sie Dienste erstellen oder bearbeiten können. Es war überraschend zu sehen, dass alle Dienste ausgeführt wurden, von denen ich nichts wusste.
Schritte
quelle