1

У меня есть скрипт Python, который я хотел бы запустить на Mac при запуске системы в отдельном сеансе экрана.

Файл Python (foo.py):

import time
import datetime

while True:
    print 'hello', datetime.datetime.now()
    time.sleep(2)

Скрипт оболочки, который его вызывает (run_foo.sh):

#!/bin/bash
username=`whoami`
_python=`which python`
screen -dm -S run_foo $_python /Users/$username/foo.py

Плист, который вызывает сценарий оболочки: https://gist.github.com/cooncesean/6617008

===========

Скрипт Python работает нормально сам по себе:

> 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
...

Сценарий Shell, который вызывает скрипт Python, работает самостоятельно:

> 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

Загрузка plist (который вызывает скрипт оболочки, который создает экран и запускает скрипт Python) оставляет мне сеанс мертвого экрана, который необходимо стереть.

> 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.

ОБНОВЛЕНИЕ: кажется, что launchd не позволяет вам вызывать демон (в данном случае screen) и вызывает исключение. Итак, как начать сеанс экрана при запуске на Mac? кронтаб?

0