Eu tenho o seguinte comando launchctl como um arquivo .plist. Ele é carregado e configurado para ser executado uma vez por dia, mas precisa ser executado como root e não tenho certeza de como verificar isso.
Além disso, esse trabalho cron basicamente cria CDs em um diretório e executa um comando. Tenho certeza que o launchd tem uma maneira melhor de especificar o diretório em que ele deve executar o comando.
Como sei que ele é executado como root e existe uma maneira melhor de escrever isso?
<?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
necessário executar a instalação de um daemon? Quero dizer, não é suficiente copiar o arquivo plist no caminho correspondente?Você já tentou usar um dos editores do launchd?
Para garantir que ele seja executado como root, tenho certeza que o launchd executará os programas como root. Já pensou em dar propriedade ao script para fazer root usando chmod? Dessa forma, ele não será executado, a menos que seja executado como root. Você precisa verificar se está sendo executado.
fonte
As listas de propriedades no LaunchAgents também funcionam, mas você precisa carregar agentes e daemons com o sudo:
Se o plist não tiver uma chave desativada, ela será carregada no próximo login ou reinicialização por padrão e
-w
não será necessária.Nota técnica TN2083: Daemons e agentes :
fonte
Para os Googlers que desejam executar especificamente um Agente de Inicialização com privilégios de root em vez de um Daemon de Inicialização , isso pode ser feito por:
~/Library/LaunchAgents
sudo
através daProgramArguments
propriedade em seu plistNOPASSWD
opção para o seu aplicativo em/etc/resolvers.d
Para mais detalhes, consulte esta e esta resposta.
fonte
O LaunchControl tornou indolor para mim em Yosemite. Ele possui uma ótima interface de arrastar e soltar para ajudá-lo a criar ou editar serviços. Foi surpreendente ver todos os serviços em execução que eu não conhecia.
Passos
fonte