2011-01-06 11:24:35 +0000 2011-01-06 11:24:35 +0000
56
56

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

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

# 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. Хотя я попробовал эти и они, кажется, работают на терминальный запуск not Mac стартап. Я пропустил файл?

Ответы (8)

60
60
60
2011-01-06 12:50:04 +0000

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

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

<?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

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

51
51
51
2012-08-23 18:09:02 +0000

Еще одно простое решение от переполнения стека : Вы можете:

  • Запустить Automator.app;
  • Выбрать “Приложение”;
  • Нажмите “Показать библиотеку” на панели инструментов (если она скрыта);
  • Добавить “Сценарий запуска оболочки” (из раздела Действия/Утилиты);
  • Скопировать и вставить скрипт в окно;
  • Протестировать его;
  • Сохранить где-нибудь: будет создан файл с именем your_name.app);
  • В зависимости от версии MacOSX:
  • Old версии: Зайдите в Системные Настройки → Учетные записи → Элементы для входа, или
  • New версия: Зайдите в Системные Настройки → Пользователи и Группы → Элементы для входа (вверху справа);
  • Добавьте это недавно созданное приложение;

Выходите из системы, войдите обратно, и все должно быть сделано;)

35
35
35
2011-01-06 11:37:23 +0000

Официально ничего из этого. Предлагаемый Apple способ - использование startd . Настройка включает в себя lingon и Launch Control

Что касается файлов, которые вы упоминаете в домашнем каталоге ~/.bashrc, ~/profile, ~/.bash_profile, то они запускаются только при входе в систему через терминал. Файлы в /etc запускаются оболочкой командной строки для всех пользователей до тех, которые находятся в домашнем каталоге, но только при входе пользователя в систему. bash manual

Запуск Unix-скрипта включает /etc/rc*, но для OSX используется только стартовая вещь

30
30
30
2015-11-03 17:53:47 +0000

Для запуска команд при входе в систему это можно сделать:

  • Создайте текстовый файл, содержащий ваши команды (сценарий bash):

  • Сохраните этот файл в ~/Library/Startup.cmd

  • Вы можете протестировать его, дважды щелкнув по файлу в Finder

  • Сделайте его исполняемым: chmod +x ~/Library/Startup.cmd

  • Добавьте этот файл в Системные настройки > Учетные записи > Элементы входа

3
3
3
2016-03-24 19:58:03 +0000

Если вам нужен подход, который будет работать под Linux & Mac OS X, то задачи cron должны быть достаточными (отредактируйте свои задачи cron, выполнив crontab -e):

@reboot /path/to/script

(кредиты: https://unix.stackexchange.com/questions/49207/how-do-i-set-a-script-that-it-will-run-on-start-up-in-freebsd )

3
3
3
2011-01-06 11:32:48 +0000

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

0
0
0
2018-05-22 16:37:28 +0000

Меня заинтересовал очень простой ответ unix на эту проблему, и я нашел его на другом сайте . Вот краткое описание решения.

Стандарт для оболочек для входа в систему - всегда искать bash-файлы конфигурации с “профилем” в названии, в таком порядке: /etc/profile, ~/.bash_profile, затем ~/.bash_login и, наконец, ~/.profile. При выходе из оболочки входа считывается ~/.bash_logout.

В моем случае я просто создал ~/.bash_профиль, а затем открыл настройки приложения Mac Terminal и изменил опцию “Shell opens with” со стандартной на /bin/bash. Вот и все. Чисто и просто.

-3
-3
-3
2017-03-11 07:25:05 +0000

откройте терминал, введите

nano ~/.bash_profile

и добавьте этот текст в файл:

/Applications/MongoDB/bin/mongod --dbpath /usr/local/mongo/data --fork logpath /usr/local/mongo/log

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

12
5
13
8
7