Mac: запустить экранную команду из launchctl

У меня есть скрипт 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 ответов

Я смог заставить это работать, собрав по кусочкам несколько разных ответов [1][2][3].

Я создал сценарий для запуска моей экранной команды следующим образом:

#!/usr/bin/env bash
screen -dmS MySessionName $SHELL
screen -S MySessionName -p 0 -X stuff "myprogram"$'\n'

затем сохранил это как .sh файл и запустил chmod a+xв теме. В Finder я использовал Cmd-I чтобы установить Terminal.app в качестве способа открытия по умолчанию .shтип файлов. Затем просто перейдите в Системные настройки-> Пользователи и учетные записи-> Элементы входа, нажмите + и добавьте файл.

Рекомендации:

  1. /questions/133284/kak-paketno-perepisat-istoriyu-v-mercurial/133292#133292
  2. /questions/426925/novyie-stroki-v-sed-na-mac-os-x/426939#426939
  3. /questions/766717/zapustit-komandu-pri-zapuske-vhode-v-sistemu-mac-os-x/766732#766732
Другие вопросы по тегам