2014-01-04 5 views
0

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

Я пытаюсь запустить команду терминала при запуске, а затем закройте терминал.

Что я пытаюсь запустить: кд/Применение/Sick-Бороду-разработку [войти] питон sickbeard.py -d [войти]

Я открыт для других решений

+0

Есть ли причина, по которой вам нужно использовать AppleScript для запуска терминала для запуска сценария оболочки для запуска скрипта Python вместо, скажем, всего лишь запуска сценария Python? – abarnert

+0

Нет, совсем нет, просто не уверен, как это сделать ... пока я могу запустить его в фоновом режиме – user3159170

+0

Кроме того, действительно ли это должно быть _at startup_, или это может быть _at login_ для обычного пользователя Счет? – abarnert

ответ

4

простой способ сделать это - избавить всех ненужных вещей.

Что вы хотите сделать, это запустить скрипт Python при запуске. Вы не хотите видеть его в окне терминала или что-то еще, поэтому нет необходимости привлекать Terminal.app. Единственная причина, по которой у вас есть сценарий оболочки, - установить рабочий каталог, и есть лучшие способы сделать это. И, по-видимому, единственная причина, по которой вы перетащили AppleScript, была для Terminal.

Что вы хотите сделать, это запустить скрипт Python в качестве агента запуска. Документация Apple по этому поводу может быть немного запутанной для новичков, но есть несколько замечательных сообщений в блогах, например, this one by Nathan Grigg.

Идея заключается в том, что вы создаете файл plist (либо путем редактирования формата XML вручную, либо с помощью одного из редакторов plist, который поставляется с OS X и/или Xcode, или с помощью стороннего инструмента, такого как Lingon), который сообщает OS X «когда эти условия верны, запустите эту команду в этом рабочем каталоге». Затем вы помещаете этот файл в ~/Library/LaunchAgents. Затем вы скажете launchctl, чтобы загрузить его. И вы сделали.

Ваш 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>org.user3159170.sickbeard</string> 
    <key>ProgramArguments</key> 
    <array> 
     <string>/usr/bin/python</string> 
     <string>/Applications/Sick-Beard-development/sickbeard.py</string> 
     <string>-d</string> 
    </array> 
    <key>WorkingDirectory</key> 
    <string>/Applications/Sick-Beard-development/</string> 
    <key>RunAtLoad</key> 
    <true /> 
    <key>LaunchOnlyOnce</key> 
    <true /> 
</dict> 
</plist> 

Эти настройки убедитесь, что OS X запускает программу при первой загрузке Launch агент, и снова первый раз, когда вы войти в систему после каждой последующей перезагрузки, и никакие другие времена, которые я думаю, это то, что вы хотите. Но man launchd.plist предоставит вам подробную информацию обо всех вариантах (или, опять же, прочитайте связанное сообщение в блоге и найдите другие).

Сохраните это как ~/Library/LaunchAgents/org.user3159170.sickbeard.plist.

Теперь на терминале, сделайте следующее:

launchctl load ~/Library/LaunchAgents/org.user3159170.sickbeard.plist 

Вы можете посмотреть на ваш console.log, чтобы посмотреть, что происходит. Вы можете попробовать запустить и остановить его вручную (man launchctl объяснит, как, но в основном это просто launchctl start org.user3159170.sickbeard). Запустите launchctl list, чтобы убедиться, что он появился. Как только все работает, перезагрузите компьютер, войдите в систему и убедитесь, что он снова запущен. Если да, то все готово.

+0

Моя доброта, это замечательный ответ, но, увы, это вне меня. Я думаю, именно поэтому я пытался получить аппликацию и терминал ... Я понимаю: python sickbeard.py -d ....Кажется, что это должно быть легко, но я узнаю разные. – user3159170

+0

@ user3159170: Вы прочитали сообщение в блоге, которое я связал? Вы посмотрели инструмент [Lingon] (http://www.peterborgapps.com/lingon/), который он рекомендовал? Если вы не хотите отображать все это для себя, это может стоить $ 5, чтобы получить программу, которая просто пишет, настраивает и устанавливает файл plist для вас. – abarnert

+1

Я сделал ... Я нашел кое-что, что достаточно просто для меня, дало ему завихрение, и оно работает: Открыть Automator и выбрать новый рабочий процесс Добавить действие «Run Shell Script» Добавить в следующий скрипт в текстовом поле: "/ Usr/local/bin/python/path/to/sickbeard/sickbeard.py -d" Сохраните рабочий процесс как приложение в папке приложения SickBeard Перейти к системным настройкам> Учетные записи> Пользователь> Элементы входа Добавьте приложение, которое вы просто созданный с помощью Automator – user3159170

Смежные вопросы