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

Befehl beim Starten / Anmelden ausführen (Mac OS X)

Ich habe mich gefragt, in welcher Datei ich diesen Bash-Befehl platzieren sollte, damit er beim Start ausgeführt wird.

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

Ich habe das Netz durchforstet und denke, es ist zwischen ~/.bashrc, ~/profile, /etc/bashrc, /etc/profile oder ~/.bash_profile. Obwohl ich diese ausprobiert habe, scheinen sie beim Terminal-Start nicht beim Mac-Start zu laufen. Vermisse ich eine Datei?

Antworten (8)

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

Um einen Befehl beim Starten unter OS X auszuführen, müssen Sie launchd verwenden.

Wenn Sie Lingon nicht verwenden möchten, müssen Sie eine launchd Property List erstellen. Dies ist eine XML-Datei, so dass Sie dies mit Ihrem bevorzugten Texteditor tun können oder alternativ den Property List Editor verwenden können, der mit den Mac OS X Dev Tools installiert wird. Erstellen Sie das Folgende:

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

Speichern Sie dies in /Library/LaunchAgents/some.meaningful.name.plist (Sie benötigen ein Administratorkonto und/oder sudo), öffnen Sie dann ein Terminal und führen Sie aus:

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

Dies veranlasst launchd, das Element zu laden, was dazu führt, dass es MongoDB beim Booten startet. Als Bonus wird launchd es überwachen und, wenn es aus irgendeinem Grund beendet wird, wird es neu gestartet. Um das Element loszuwerden, ersetzen Sie einfach load im obigen Befehl durch unload.

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

Eine weitere einfache Lösung von Stack Overflow : Sie können:

  • Automator.app starten;
  • “Anwendung” auswählen;
  • “Bibliothek anzeigen” in der Symbolleiste anklicken (falls ausgeblendet);
  • “Shell-Skript ausführen” hinzufügen (aus den Aktionen/Dienstleistungen);
  • Ihr Skript per Copy-and-Paste in das Fenster einfügen;
  • es testen;
  • es irgendwo speichern: eine Datei namens your_name.app wird erstellt);
  • Je nach Ihrer MacOSX-Version:
  • Alte Versionen: Gehen Sie zu System Preferences → Accounts → Login items, oder
  • New version: Gehen Sie zu Systemeinstellungen → Benutzer und Gruppen → Login-Elemente (oben rechts);
  • Fügen Sie diese neu erstellte App hinzu;

Melden Sie sich ab, melden Sie sich wieder an, und Sie sollten fertig sein. ;)

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

Offiziell keine dieser Möglichkeiten. Der von Apple vorgeschlagene Weg ist, launchd zu verwenden. Anleitungen, um dies einzurichten, sind lingon und Launch Control

Was die von Ihnen erwähnten Dateien angeht, so werden die im Home-Verzeichnis ~/.bashrc, ~/profile, ~/.bash_profile nur gestartet, wenn Sie sich über ein Terminal anmelden. Diejenigen in /etc werden von der Shell für alle Benutzer vor denjenigen im Home-Verzeichnis gestartet, aber nur, wenn ein Benutzer sich anmeldet. bash manual

Das Unix-Startskript involviert /etc/rc*, aber für OSX verwenden Sie einfach das launchd-Zeug

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

Um Befehle bei der Anmeldung zu starten, können Sie Folgendes tun:

  • Erstellen Sie eine Textdatei mit Ihren Befehlen (Bash-Skript):

  • Speichern Sie diese Datei in ~/Library/Startup.cmd

  • Sie können sie testen, indem Sie im Finder auf die Datei doppelklicken

  • Machen Sie sie ausführbar: chmod +x ~/Library/Startup.cmd

  • Fügen Sie diese Datei in Systemeinstellungen > Konten > Anmeldeelemente hinzu

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

Wenn Sie einen Ansatz wünschen, der unter Linux & Mac OS X funktioniert, sollte ein Cron-Task ausreichen (bearbeiten Sie Ihre Cron-Tasks, indem Sie crontab -e ausführen):

@reboot /path/to/script

(Credits: 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

Sie müssen sich ansehen, wie launchd und launchctl unter MacOS funktionieren. Sie könnten damit beginnen, die Manpages für beide Befehle zu lesen. Sie könnten dann innerhalb von /Library/LaunchAgents/ und /Library/LaunchDaemons/ nach Beispielen suchen, wie Sie Anwendungen so einrichten, dass sie zu verschiedenen Zeiten über die launchctl-Schnittstelle geladen werden. Hier ist ein Beispiel , das ich auf Stack Overflow gefunden habe und das Ihnen weiterhelfen könnte.

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

Ich war an einer sehr einfachen Unix-Antwort auf dieses Problem interessiert und fand sie auf einer anderen Seite . Hier ist eine Zusammenfassung der Lösung.

Der Standard für Login-Shells ist, immer nach den Bash-Konfigurationsdateien mit “profile” im Namen zu suchen, in dieser Reihenfolge: /etc/profile, ~/.bash_profile, dann ~/.bash_login und zuletzt ~/.profile. Wenn Login-Shells beendet werden, lesen sie ~/.bash_logout.

In meinem Fall habe ich einfach die ~/.bash_profile erstellt und dann die Einstellungen für die Mac Terminal-App geöffnet und die Option “Shell öffnet mit” von Standard auf /bin/bash geändert. Das war’s. Sauber und einfach.

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

Terminal öffnen,

nano ~/.bash_profile

eingeben und diesen Text in die Datei einfügen:

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