Eu tenho um script Python que gostaria de executar em um Mac na inicialização do sistema em uma sessão de tela desanexada.
O arquivo Python ( foo.py
):
import time
import datetime
while True:
print 'hello', datetime.datetime.now()
time.sleep(2)
O script da shell que o chama ( run_foo.sh
):
#!/bin/bash
username='whoami'
_python='which python'
screen -dm -S run_foo $_python /Users/$username/foo.py
O problema que chama o script da shell: link
===========
O script Python é executado por conta própria:
> python foo.py
hello 2013-09-18 21:20:22.132170
hello 2013-09-18 21:20:24.133420
hello 2013-09-18 21:20:26.134697
...
O script Shell que chama o script Python é executado por conta própria:
> sh run_foo.sh
There is a screen on:
1922.run_foo (Detached)
1 Socket in /var/folders/4z/0413fcs523l8nz12xbvng0bh0000gn/T/.screen.
> screen -r run_foo
hello 2013-09-18 21:24:57.243103
hello 2013-09-18 21:24:59.244349
Carregar o plist (que chama o shell script, que cria a tela e executa o script Python) me deixa com uma sessão de tela morta que precisa ser apagada.
> launchctl load ~/Library/LaunchAgents/start-foo.plist
> screen -list
There is a screen on:
1951.run_foo (Dead ???)
Remove dead screens with 'screen -wipe'.
1 Socket in /var/folders/4z/0413fcs523l8nz12xbvng0bh0000gn/T/.screen.
UPDATE: aparece O launchd não permite chamar um daemon (neste caso, screen
) e gera uma exceção. Então, como se inicia uma sessão de tela na inicialização de um Mac? crontab?