Как запускать терминальную программу при старте системы

Мне понадобилось запускать несколько самописный программ-демонов на своём компьютере в автоматическом режиме. В этой заметке я кратко изложу, как это сделать.

  • Придумайте имя для «сервиса». Что-нибудь позаковыристее. У меня было com.bm.t2j. (Демон занимается кросспостингом моих сообщений из твиттера в juick)
  • Создайте файл ~/Library/LaunchAgents/com.bm.t2j.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.bm.t2j</string>
         <key>Program</key>
         <string>/Users/bm/bin/twitter2juick/t2j.command</string>
         <key>RunAtLoad</key>
         <true />
    </dict>
    </plist>
    
    Здесь нужно заменить строки с названием имени сервиса и полного пути к исполняемому файлу.
  • Теперь можно либо перезагрузить компьютер, либо стартовать демон вручную с помощью следующих команд в терминале:
    launchctl load ~/Library/LaunchAgents
    launchctl start com.bm.t2j
    

Никаких отладочных сообщений в терминале вы не увидите, пользуйтесь программой Console (system.log).

  • Алексей

    А этот скрипт запустится когда пользователь залогинился, или он может запуститься без логина на компе?

    • http://karguine.blogspot.com bm

      Может. Создайте такой же файл в /Library/LaunchAgents

      • Алексей

        Спасибо.