Usando o Launchd para invocar um script Python?

4

Como continuação da minha pergunta inicial ...

Arquivo de log de backup rotineiro no OSX?

Estou tentando fazer backup de um arquivo de log em um computador OSX e em um iPhone com jailbreak. O LaunchD foi recomendado como uma solução e algumas pesquisas do Google posteriormente revelaram que o LingOn é a ferramenta a ser usada.

A saída (depois de eu preencher os campos) me dá este 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>Label</key>
    <string>com.ash.MySuperLaunchd</string>
    <key>ProgramArguments</key>
    <array>
        <string>python</string>
        <string>/Users/ash/Desktop/sendemail.py</string>
    </array>
    <key>StartInterval</key>
    <integer>3600</integer>
</dict>
</plist>

Agora, executar meu script python invocando-o no terminal enviará o e-mail para minha caixa de entrada com os anexos de que preciso.

O LaunchD simplesmente não inicia e não sei por quê.

    
por Ash 02.07.2011 / 11:37

1 resposta

1

Você precisa carregar o agente. Seja relogin ou launchctl load /path/to/file.plist .

RunAtLoad é falso por padrão, portanto, o script é executado pela primeira vez StartInterval segundos após o carregamento, neste caso 3600.

O caminho em ProgramArguments precisa apontar para o local permanente do script, portanto, provavelmente ele não deveria estar em ~/Desktop/ . O script de destino não precisa ser executável. Mas, como corretamente solucionado por @DanielBeck nos comentários, verifique se você é capaz, por exemplo, de python /Users/ash/Desktop/sendemail.py em primeiro lugar e se a linha shebang está correta.

    
por 02.07.2011 / 20:45