Ich habe eine launchctl .plist-Datei in /Library/LaunchDaemons wie folgt:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>david.ports.slocate.home.updatedb</string>
<key>ProgramArguments</key>
<array>
<string>/opt/local/bin/slocate</string>
<string>-U</string>
<string>/Users/david</string>
<string>-o</string>
<string>/Users/david/slocate_david.db</string>
</array>
<key>Umask</key>
<string>077</string>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>5</integer>
<key>Minute</key>
<integer>45</integer>
</dict>
</dict>
</plist>
Für diejenigen, die sich fragen, verwende ich den slocate-Port von MacPorts anstelle der nativen locate-Datenbank, die mit OS X geliefert wird. Dieser .plist-Job aktualisiert täglich um 5:45 Uhr die slocate-Datenbank, die für mein Home-Verzeichnis spezifisch ist. Die Umask-Einstellung von 077 macht die Ausgabedatei nur für mich lesbar. Die Datei wird jedoch mit dem Besitz von root erstellt; nicht was ich will.
Gibt es eine Möglichkeit, den Besitz der Ausgabedatei anstelle der Standardeinstellung von root anzugeben? Mir ist klar, dass ich dies als LaunchAgent unter ~/Library/LaunchAgents ausführen kann, aber ich bevorzuge, dass der Job ausgeführt wird, ob ich angemeldet bin oder nicht, und installiere ihn daher als LaunchDaemon.
Ich verwende OS X 10.10.3 Yosemite.
Ich habe ein paar Vorschläge. Laut Handbuch können Sie den UserName-Schlüssel https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man5/launchd.plist.5.html festlegen . Sie könnten periodic mit einem Shell-Skript verwenden, um slocate auszuführen und die Berechtigungen der Datenbank zu ändern. Richten Sie eine Benutzer-Crontab ein. Eine Benutzer-Crontab wird nur zur angegebenen Zeit ausgeführt.
Anstatt /Library/LaunchDaemons
den Benutzer basierend ~/Library/LaunchAgents
auf Ihrer Benutzerbibliothek zu verwenden. Dann wird der Prozess als angemeldeter Benutzer statt als Root-Konto ausgeführt.
Benutzer3112401
Zwieback