Eu estou tentando criar um plist para um executável unix. O executável funciona perfeitamente quando eu o executo no Terminal. No entanto, eu simplesmente não consigo executá-lo a partir do launchd. Aqui estão os passos que eu dei:
sudo touch /Library/LaunchDaemons/Parity.plist
sudo nano /Library/LaunchDaemons/Parity.plist
Então eu introduzo os seguintes dados:
<?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>Parity</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/Cellar/parity/1.5.12/bin/parity</string>
<string>start</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
Se eu corro:
sudo launchctl load /Library/LaunchDaemons/parity.plist
Eu recebo a resposta:
/Library/LaunchDaemons/Parity.plist: service already loaded
Alguém tem alguma sugestão?
sudo launchctl unload...
então carregue novamentesudo launchctl load...
sudo launchctl remove...
para removê-lo. Então recarregue.launchctl list
eu recebo- 1 Parity
. Todo o resto tem um 0 ao lado dele.Respostas:
Acontece que a causa do erro foi um problema mal escrito -
<string>start</string>
estava instruindo o arquivo exec para executar umstart
comando ao iniciar o daemon, que estava causando a falha. Eu apaguei essa linha do problema e agora ela se comporta como eu pretendia.fonte