launchd me fornece erro "Nenhum arquivo ou diretório"

5

meu .plist é mostrado abaixo ... Em /var/log.system.log eu posso ver

(com.example.exampled[24728]): posix_spawn("/usr/local/bin/ruby /Users/radek/Sites/sinatrasvn/web.rb", ...): No such file or directory
(com.example.exampled[24728]): Exited with exit code: 1
(com.example.exampled): Throttling respawn: Will start in 10 seconds

mas se eu executar /usr/local/bin/ruby /Users/radek/Sites/sinatrasvn/web.rb , o script funciona bem. Qualquer ideia?

       <?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>com.example.exampled</string>
    <key>ProgramArguments</key>
    <array>
                 <string>/usr/local/bin/ruby /Users/radek/Sites/sinatrasvn/web.rb</string>
    </array>
    <key>KeepAlive</key>
    <true/>
       </dict>
       </plist>
    
por Radek 04.03.2011 / 02:23

2 respostas

10

launchd não usa o shell para executar programas; ele usa a chamada do sistema exec . É por isso que o plist que você tem acima usa um array.

Você está definindo um único elemento desse array para uma string contendo um espaço, o que leva launchd a tentar exec("/usr/local/bin/ruby /Users/radek/Sites/sinatrasvn/web.rb") - o que, com certeza, não é o nome de um arquivo. Em vez disso, você deseja definir a matriz:

    <array>
                 <string>/usr/local/bin/ruby</string>
                 <string>/Users/radek/Sites/sinatrasvn/web.rb</string>
    </array>

Isso passará os caminhos como argumentos individuais para exec() , e a coisa certa acontecerá.

    
por 04.03.2011 / 02:32
0

Eu tenho um arquivo exec que é basicamente um serviço de auto hospedagem. Ele dispara sem problemas quando eu o executo no Terminal com o código /Users/user/Public/node_modules/codem-transcode/bin/codem-transcode -c /Users/user/Public/tmp/config.json

Então, criei um script plist que quero executar na inicialização e armazenei-o na pasta LaunchAgent. Ao executá-lo, recebo o erro "Nenhum arquivo ou diretório".

Aqui está uma foto mostrando quase todas as informações que eu tenho

Todas as informações

E aqui está o código plist

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!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>com.wolftech.transcode.job</string>
        <key>RunAtLoad</key>
        <true/>
        <key>StandardErrorPath</key>
        <string>/tmp/com.wolftech.transcode.job.err</string>
        <key>StandardOutPath</key>
        <string>/tmp/com.wolftech.transcode.job.out</string>
        <key>StartInterval</key>
        <integer>60</integer>
        <key>ProgramArguments</key>
        <array>
            <string>/Users/user/Public/node_modules/codem-transcode/bin/codem-transcode -c /Users/user/Public/tmp/config.json</string>
        </array>
    </dict>
</plist>
    
por 17.11.2015 / 15:40

Tags