Команда выполнения на запуске / вход в систему (Mac OS X)

Я задавался вопросом, какой файл я должен поместить, это избивает команду, таким образом, это будет выполнено на запуске.

# Start the MongoDB server
/Applications/MongoDB/bin/mongod --dbpath /usr/local/mongo/data --fork --logpath /usr/local/mongo/log

Я обыскивал сеть и думаю, что это между ~/.bashrc, ~/profile, /etc/bashrc, /etc/profile или ~/.bash_profile. Хотя я попробовал их, и они, кажется, работают на терминальном запуске не запуск Mac. Я пропускаю файл?

53
задан 08.03.2015, 18:41

3 ответа

Официально ни один из них. Apple предложила, чтобы путь состоял в том, чтобы использовать launchd. Guis для установки этого включают Управление Запуском и lingon

Что касается файлов Вы упоминаете, что те в корневом каталоге ~/.bashrc, ~ / профиль, ~/.bash_profile только запускаются, когда Вы входите в систему через терминал. Те в / и т.д. выполняются оболочкой, запускающейся для всех пользователей перед теми в корневом каталоге, но только когда пользовательский вход в систему сделан.. руководство удара

Сценарий запуска Unix включил/etc/rc*, но для OSX просто используют материал launchd

35
ответ дан 07.12.2019, 08:25

Для выполнения команды на запуске на OS X необходимо использовать launchd.

Если Вы не хотите использовать Lingon, необходимо создать a launchd Список свойств. Это - XML-файл, таким образом, можно сделать это с любимым текстовым редактором, или альтернативно можно использовать Редактора Списка свойств, это установлено с Инструментами Dev Mac OS X. Создайте следующее:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>some.meaningful.name</string> <!-- org.mongodb.mongodb perhaps? -->

    <key>OnDemand</key>
    <false/>

    <key>UserName</key>
    <string>anAppropriateUser</string>

    <key>GroupName</key>
    <string>anAppropriateGroup</string>

    <key>ProgramArguments</key>
    <array>
            <string>/Applications/MongoDB/bin/mongod</string>
            <string>--dbpath</string>
            <string>/usr/local/mongo/data</string>
            <string>--fork</string>
            <string>--logpath</string>
            <string>/usr/local/mongo/log</string>
    </array>
</dict>
</plist>

Сохраните это в /Library/LaunchAgents/some.meaningful.name.plist (Вам будет нужна учетная запись администратора и/или sudo), затем откройте терминал и сделайте:

sudo launchctl load /Library/LaunchAgents/some.meaningful.name.plist

Это заставит launchd загружать объект, который заставит его запускать MongoDB на начальной загрузке. В качестве награды, launchd будет контролировать его и, если это выйдет по какой-либо причине, то это будет перезапущено. Для избавлений от объекта просто заменяют загрузку в вышеупомянутой команде с, разгружаются.

60
ответ дан 07.12.2019, 08:25

Необходимо будет посмотреть на как launchd и launchctl работа над MacOS. Вы могли запустить путем чтения страниц справочника для обоих команды. Вы могли затем посмотреть внутри /Library/LaunchAgents/ и /Library/LaunchDaemons/ для примеров того, как настроить приложения для загрузки в разное время через launchctl интерфейс.

Вот пример, который я нашел на Переполнении стека, которое могло бы помочь Вам далее.

3
ответ дан 07.12.2019, 08:25

Теги

Похожие вопросы