Нужна помощь в запуске скрипта Python на Mac с помощью Launch Agent и отправке вывода в окно - PullRequest
3 голосов
/ 25 апреля 2011

Я создал скрипт на python, который я хочу запускать автоматически при входе в систему на Mac, и мне нужна некоторая помощь с использованием Launch Agent для этого. До этого момента я очень старался, чтобы все работало, поэтому я решил, что это именно то, о чем можно спросить, но я все еще довольно новичок в этом, поэтому мне нужна помощь.

Вот что у меня так далеко и что мне еще нужно:

У меня есть скрипт Python, который я могу запустить из терминала. Он периодически выводит текст в окно терминала всякий раз, когда он делает что-то важное (использует команду python 'print'). Он также создает журнал этого в другом месте, но я также хочу обновление в реальном времени в окне, которое остается открытым.

Теперь мне нужен Launch Agent, чтобы автоматически запускать этот скрипт при входе в систему и по-прежнему выводить этот текст. У меня работает базовый агент запуска, но он запускает скрипт в фоновом режиме, и я больше не вижу вывод. Исходя из моих исследований, похоже, что я могу использовать ключевое слово «StandardOutPath» в Lauch Agent .plist, чтобы перенаправить этот вывод? Я еще недостаточно хорошо понимаю stdout / stdin / stderr в этих программах, чтобы понять, как все это работает, но я надеялся по существу перенаправить этот вывод, возможно, в окно xterm или подобное.

Я нигде не смог найти хороший пример такого рода вещей, так что, возможно, есть лучший способ сделать это, и я просто не ищу правильную вещь. Будем очень благодарны за любую помощь или объяснение того, как все это работает.

Обновлено: Мой рабочий агент запуска .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.name.WVCS-0.1</string>
    <key>RunAtLoad</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
        <string>osascript</string>
        <string>/Path/to/StartupScript</string>
    </array>
</dict>
</plist>

1 Ответ

4 голосов
/ 26 апреля 2011

Если вы хотите, чтобы вывод отображался в терминале, вы можете использовать Launch Agent, чтобы запустить Apple Script, который откроет Terminal и затем запустит ваш скрипт на python:

tell application "Terminal"
    activate
    do script "/usr/bin/python WVCS-0.1.py"
end tell

или для отображения текста в окне appleScript / вызова

tell application "Terminal"
    activate
    do shell script "/usr/bin/python WVCS-0.1.py"
end tell

А затем измените свой список, чтобы

<array>
    <string>osascript</string>
    <string>/path/to/that/script</string>
</array>

Не супер элегантно, но я надеюсь, что это поможет!

...