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

Exécution de la commande au démarrage / connexion (Mac OS X)

Je me demandais dans quel fichier je devrais placer cette commande bash pour qu'elle soit exécuté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 ou ~/.bash_profile. Bien que j'aie essayé celles-ci et qu'elles semblent fonctionner sur terminal startup pas Mac startup. Est-ce qu'il me manque un fichier ?

Réponses (8)

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

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 une liste de propriétés launchd. Il s'agit d'un fichier XML, vous pouvez donc le faire avec votre éditeur de texte préféré ou bien utiliser l'éditeur de liste de propriétés qui est installé avec les outils de développement de Mac OS X. Créez le suivant :

<?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 ce fichier dans /Library/LaunchAgents/some.meaningful.name.plist (vous aurez besoin d'un compte administrateur et/ou sudo), puis ouvrez un terminal et faites-le :

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

Ceci fera que launchd chargera l'élément qui fera démarrer MongoDB au démarrage. En bonus, launchd le surveillera et, s'il sort pour une raison quelconque, il sera redémarré. Pour se débarrasser de l'objet, il suffit de remplacer load dans la commande ci-dessus par un déchargement.

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

Une autre solution simple de Stack Overflow : Vous pouvez :

  • Lancer Automator.app ;
  • Sélectionner “Application” ;
  • Cliquer sur “Afficher la bibliothèque” dans la barre d'outils (si elle est cachée) ;
  • Ajouter “Exécuter un script shell” (à partir des Actions/Utilitaires) ;
  • Copier-coller votre script dans la fenêtre ;
  • Le tester ;
  • L'enregistrer quelque part : un fichier appelé your_name.app sera créé) ;
  • Selon votre version de MacOSX :
  • Anciennes versions : Allez dans les préférences système → Comptes → Éléments de connexion, ou
  • Nouvelle version : Allez dans les préférences système → Utilisateurs et groupes → Éléments de connexion (en haut à droite) ;
  • Ajoutez cette nouvelle application ;

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

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

Officiellement, rien de tout cela. La méthode suggérée par Apple est d'utiliser launchd . Les fichiers que vous mentionnez sont ceux qui se trouvent dans le répertoire d'accueil ~/.bashrc, ~/profile, ~/.bash_profile ne sont lancés que lorsque vous vous connectez via un terminal. Ceux du répertoire /etc sont exécutés par le shell qui démarre pour tous les utilisateurs avant ceux du répertoire home mais seulement quand un utilisateur se connecte… Le script de démarrage Unix implique /etc/rc* mais pour OSX il suffit d'utiliser la commande launchd

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

Pour lancer des commandes lors de la connexion, vous pouvez le faire :

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

  • Enregistrer ce fichier dans ~/Library/Startup.cmd

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

  • Le rendre exécutable : chmod +x ~/Library/Startup.cmd

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

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

Si vous voulez une approche qui fonctionne sous Linux & 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-that-it-will-run-on-start-up-in-freebsd )

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

Vous devrez examiner comment launchd et launchctl fonctionnent sur MacOS. Vous pouvez commencer par lire les pages de man pour les deux commandes. Vous pourriez ensuite regarder à l'intérieur de /Library/LaunchAgents/ et /Library/LaunchDaemons/ pour des exemples sur la façon de configurer des applications à charger à différents moments par l'interface launchctl. Voici un exemple que j'ai trouvé sur Stack Overflow et qui pourrait vous aider.

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

J'étais intéressé par une réponse unix très simple à ce problème et je l'ai trouvée sur un autre site . Voici un résumé de la solution.

La norme pour les shells de connexion est de toujours rechercher les fichiers de configuration de bash avec “profile” dans le nom, dans cet ordre : /etc/profile, ~/.bash_profile, puis ~/.bash_login et enfin ~/.profile. Lorsque les shells de connexion se terminent, ils lisent ~/.bash_logout.

Dans mon cas, je viens de créer le ~/.bash_profil, puis j'ai ouvert les préférences de l'application Mac Terminal et j'ai changé l'option “Shell opens with” par défaut en /bin/bash. C'est tout. C'est simple et propre.

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

Ouvrez le terminal, tapez

nano ~/.bash_profile

puis ajoutez ce texte au fichier :

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