Não é possível executar o script Node.js com o launchd no Mac

1

Estou tentando executar um script node a cada hora no meu Mac (OSX 10.8.2 Mountain Lion). De acordo com os resultados de pesquisa de alta classificação, a melhor maneira de fazer isso é adicionar um agente de lançamento launchd .

Por alguma razão, parece que não funciona.

Eu escrevi o seguinte arquivo do agente de inicialização e o salvei como ~/Library/LaunchAgents/agenttest.plist .

<?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>KeepAlive</key>
        <dict>
            <key>SuccessfulExit</key>
            <false/>
        </dict>
        <key>Label</key>
        <string>protocol</string>
        <key>ProgramArguments</key>
        <array>
            <string>/usr/local/bin/node</string>
            <string>/Users/snorpey/PATH/TO/file.js</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>StartInterval</key>
        <integer>3600</integer>
    </dict>
</plist>

Eu iniciei o agente de lançamento executando launchctl load ~/Library/LaunchAgents/agenttest.plist no terminal.

Também tornei o arquivo de script executável com sudo chmod -x /Users/snorpey/PATH/TO/file.js e atualizei as permissões de arquivo com sudo chmod 777 /Users/snorpey/PATH/TO/file.js .

Quando executo /usr/local/bin/node /Users/snorpey/PATH/TO/file.js no terminal, o script funciona bem.

No entanto, parece que não funciona quando é executado por launchd . Eu recebo as seguintes mensagens em /var/log/system.log :

Jan 15 22:32:46 snorpey com.apple.launchd.peruser.501[595] (agenttest[21625]): Exited with code: 1
Jan 15 22:32:46 snorpey com.apple.launchd.peruser.501[595] (agenttest): Throttling respawn: Will start in 10 seconds

Por que falha ao executar o script?

    
por snorpey 15.01.2013 / 22:48

1 resposta

1

Acontece que eu tenho que executar este trabalho como root por qualquer motivo.

Eu movi o arquivo para /Library/LaunchAgents/agenttest.plist .

Eu também atualizei a propriedade de arquivos com sudo chown root /Library/LaunchAgents/agenttest.plist .

E as permissões de arquivo com sudo chmod 644 /Library/LaunchAgents/agenttest.plist .

Para executar o trabalho como root: sudo launchctl load /Library/LaunchAgents/agenttest.plist

    
por 16.01.2013 / 17:06