81 votes

Exécuter une commande au démarrage / à la connexion (Mac OS X)

Je me demandais dans quel fichier je devais placer cette commande bash pour qu'elle soit lancée au démarrage.

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

J'ai parcouru le net et je pense que c'est entre ~/.bashrc , ~/profile , /etc/bashrc , /etc/profile o ~/.bash_profile . Bien que j'aie essayé ces derniers et qu'ils semblent fonctionner sur démarrage du terminal no Démarrage du Mac . Il me manque un fichier ?

81voto

Eleanor Points 71

Une autre solution simple de Stack Overflow : Vous pouvez :

  • Lancez Automator.app ;
  • Sélectionnez "Application" ;
  • Cliquez sur "Afficher la bibliothèque" dans la barre d'outils (si elle est cachée) ;
  • Ajoutez "Run Shell Shell" (à partir des Actions/Utilitaires) ;
  • Copiez et collez votre script dans la fenêtre ;
  • Testez-le ;
  • Enregistrez-le quelque part : un fichier appelé your_name.app sera créé) ;
  • Selon votre version de MacOSX :
    • Vieux versions : Allez dans Préférences Système Comptes Éléments de connexion, ou
    • Nouveau version : Allez dans Préférences système Utilisateurs et groupes Éléments de connexion (en haut à droite) ;
  • Ajoutez cette application nouvellement créée ;

Déconnectez-vous, reconnectez-vous, et vous devriez avoir terminé ;)

73voto

Scott Points 5683

Pour exécuter une commande au démarrage sous OS X, vous devez utiliser launchd .

Si vous ne voulez pas utiliser Lingon vous devez créer un launchd Liste des biens. Il s'agit d'un fichier XML, vous pouvez donc le faire avec votre éditeur de texte préféré ou utiliser l'éditeur de liste de propriétés installé avec les outils de développement Mac OS X. Créez les éléments suivants :

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

Enregistrez ceci dans /Library/LaunchAgents/some.meaningful.name.plist (vous aurez besoin d'un compte administrateur et/ou sudo ), puis ouvrez un terminal et faites :

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

Ceci fera en sorte que launchd charge l'élément qui fera en sorte de démarrer MongoDB au démarrage. En prime, launchd le surveillera et, s'il sort pour une raison quelconque, il sera relancé. Pour se débarrasser de l'élément, il suffit de remplacer load dans la commande ci-dessus par unload.

44voto

mmmmmm Points 5716

Officiellement, rien de tout cela. La méthode suggérée par Apple consiste à utiliser lancé sur le marché . Voici quelques conseils pour mettre en place ce système lingon y Contrôle du lancement

En ce qui concerne les fichiers que vous mentionnez, ceux du répertoire personnel ~/.bashrc, ~/profile, ~/.bash_profile ne sont lancés que lorsque vous vous connectez via un terminal. Ceux dans /etc sont lancés par le Shell en commençant pour tous les utilisateurs avant ceux du répertoire home mais seulement lorsqu'une connexion utilisateur est faite . manuel bash

Le script de démarrage Unix impliquait /etc/rc* mais pour OSX, il suffit d'utiliser le truc launchd

41voto

Geekarist Points 537

Pour lancer des commandes lors de l'ouverture de session, vous pouvez procéder comme suit :

  • Créez un fichier texte contenant vos commandes (bash script) :

    #!/bin/bash
    
    # Start the MongoDB server
    /Applications/MongoDB/bin/mongod --dbpath /usr/local/mongo/data --fork --logpath /usr/local/mongo/log
  • Enregistrez ce fichier dans ~/Library/Startup.cmd

  • Vous pouvez le tester en double-cliquant sur le fichier dans le Finder.

  • Rendez-le exécutable : chmod +x ~/Library/Startup.cmd

  • Ajoutez ce fichier dans Préférences système > Comptes > Éléments de connexion

11voto

Sridhar Sarnobat Points 1216

Si vous voulez une approche qui fonctionne sur Linux et Mac OS X, une tâche cron devrait suffire (modifiez vos tâches cron en exécutant crontab -e ) :

@reboot /path/to/script

(crédits : https://unix.stackexchange.com/questions/49207/how-do-i-set-a-script-qu'il-faudra-exécuter-sur-le-démarrage-en-freebsd )

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X