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

Opdracht uitvoeren bij opstarten / aanmelden (Mac OS X)

Ik vroeg me af in welk bestand ik dit bash commando moet plaatsen zodat het bij het opstarten wordt uitgevoerd.

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

Ik heb het net afgestruind en denk dat het tussen ~/.bashrc, ~/profile, /etc/bashrc, /etc/profile of ~/.bash_profile is. Hoewel ik deze heb geprobeerd en ze lijken te draaien op terminal opstarten niet Mac opstarten. Mis ik een bestand?

Antwoorden (8)

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

Om een commando uit te voeren bij het opstarten op OS X, moet je launchd gebruiken.

Als je geen Lingon wilt gebruiken, moet je een launchd Property List maken. Dit is een XML-bestand, dus je kunt dit doen met je favoriete tekstverwerker of je kunt de Property List Editor gebruiken die geïnstalleerd is met de Mac OS X Dev Tools. Maak het volgende:

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

Sla dit op in /Library/LaunchAgents/some.meaningful.name.plist (je hebt een administrator account nodig en/of sudo), open dan een terminal en doe:

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

Dit zal launchd het item laten laden waardoor het MongoDB zal starten bij het opstarten. Als bonus zal launchd het in de gaten houden en, als het om wat voor reden dan ook afsluit, zal het opnieuw worden gestart. Om van het item af te komen, vervangt u load in het bovenstaande commando door unload.

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

Een andere eenvoudige oplossing van Stack Overflow : Je kunt:

  • Start Automator.app;
  • Selecteer “Toepassing”;
  • Klik op “Bibliotheek tonen” in de werkbalk (indien verborgen);
  • Voeg “shellscript uitvoeren” toe (vanuit de Acties/Utiliteiten);
  • Kopieer-en-plak je script in het venster;
  • Test het;
  • Sla het ergens op: er wordt een bestand met de naam your_name.app aangemaakt);
  • Afhankelijk van je MacOSX-versie:
  • Old versies: Ga naar Systeemvoorkeuren → Accounts → Aanmeldingsitems, of
  • Nieuwe versie: Ga naar Systeemvoorkeuren → Gebruikers en Groepen → Aanmeldingsitems (rechtsboven);
  • Voeg deze nieuw aangemaakte app toe;

Log uit, log weer in, en je zou klaar moeten zijn. ;)

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

Officieel geen van deze. De door Apple voorgestelde manier is om launchd te gebruiken. Guis om dit in te stellen zijn lingon en Launch Control

Wat betreft de bestanden die u noemt, die in de homedirectory ~/.bashrc, ~/profile, ~/.bash_profile worden alleen gestart als u inlogt via een terminal. Die in /etc worden door de shell voor alle gebruikers gestart, vóór die in de homedirectory, maar alleen als een gebruiker inlogt… bash handleiding

Het Unix opstartscript betreft /etc/rc* maar voor OSX gebruik je gewoon het launchd spul

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

Om commando’s te starten wanneer je inlogt, kun je het volgende doen:

  • Maak een tekstbestand met je commando’s (bash script):

  • Sla dit bestand op in ~/Library/Startup.cmd

  • Je kunt het testen door te dubbelklikken op het bestand in de Finder

  • Maak het uitvoerbaar: chmod +x ~/Library/Startup.cmd

  • Voeg dit bestand toe in Systeemvoorkeuren > Accounts > Aanmeldingsitems

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

Als je een aanpak wilt die ook op Linux & Mac OS X werkt, zou een cron taak voldoende moeten zijn (bewerk je cron taken door crontab -e uit te voeren):

@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

Je zult moeten kijken hoe launchd en launchctl werken op MacOS. Je zou kunnen beginnen met het lezen van de man pagina’s voor beide commando’s. Je zou dan in /Library/LaunchAgents/ en /Library/LaunchDaemons/ kunnen kijken voor voorbeelden van hoe je programma’s kunt instellen om op verschillende tijden te laden via de launchctl interface. Hier is een voorbeeld dat ik vond op Stack Overflow dat je verder zou kunnen helpen.

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

Ik was geïnteresseerd in een zeer eenvoudig unix antwoord op dit probleem en vond het op een andere site . Hier is een samenvatting van de oplossing.

De standaard voor login shells is om altijd te zoeken naar de bash configuratie bestanden met “profile” in de naam, in deze volgorde: /etc/profile, ~/.bash_profile, dan ~/.bash_login en als laatste ~/.profile. Wanneer login shells afsluiten, lezen ze ~/.bash_logout.

In mijn geval heb ik gewoon ~/.bash_profile aangemaakt en daarna de voorkeuren voor de Mac Terminal applicatie geopend en de “Shell opent met” optie veranderd van standaard naar /bin/bash. Dat was het. Schoon en eenvoudig.

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

open terminal, type

nano ~/.bash_profile

voeg dan deze tekst toe aan het bestand:

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