Mam następujące polecenie launchctl jako plik .plist. Jest ładowany i skonfigurowany do uruchamiania raz dziennie, ale musi działać jako root i nie jestem pewien, jak to sprawdzić.
Ponadto to zadanie crona zasadniczo CD do katalogu i uruchamia polecenie. Jestem pewien, że uruchomione ma lepszy sposób na określenie katalogu, w którym ma uruchomić polecenie.
Skąd mam wiedzieć, że jest uruchamiany jako root i czy istnieje lepszy sposób na napisanie tego?
<?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
do zainstalowania demona wymagane jest uruchomienie ? Mam na myśli, czy nie wystarczy skopiować plik plist do odpowiedniej ścieżki?Czy próbowałeś użyć jednego z uruchomionych edytorów?
Aby upewnić się, że jest uruchamiany jako root, jestem pewien, że uruchomione programy będą uruchamiały się jako root. Czy kiedykolwiek myślałeś o przekazaniu własności skryptu do rootowania za pomocą chmod? W ten sposób nie będzie działać, dopóki nie zostanie uruchomiony jako root. Następnie musisz sprawdzić, czy działa.
źródło
Listy właściwości w LaunchAgents również działają, ale musisz załadować zarówno agentów, jak i demony za pomocą sudo:
Jeśli lista nie ma wyłączonego klucza, jest ładowana przy następnym logowaniu lub domyślnie restartuje i
-w
nie jest konieczna.Uwaga techniczna TN2083: Demony i pełnomocnicy :
źródło
W przypadku Googlersów, którzy chcą w szczególności uruchomić agenta uruchamiania z uprawnieniami roota zamiast demona uruchamiania , można to zrobić przez:
~/Library/LaunchAgents
sudo
pomocąProgramArguments
właściwości w swoim plistNOPASSWD
opcję dla swojej aplikacji w/etc/resolvers.d
Aby uzyskać więcej informacji, zobacz tę i tę odpowiedź.
źródło
LaunchControl sprawił, że stało się to dla mnie bezbolesne w Yosemite. Ma ładny interfejs GUI typu „przeciągnij i upuść”, który pomaga tworzyć lub edytować usługi. Zaskakujące było, że działały wszystkie usługi, o których nie wiedziałem.
Kroki
źródło