Je me demandais dans quel fichier je devrais placer cette commande bash afin 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 qu'il se situe entre ~/.bashrc
, ~/profile
, /etc/bashrc
, /etc/profile
ou ~/.bash_profile
. Bien que j'ai essayé ceux-ci et ils semblent fonctionner sur démarrage du terminal pas Démarrage Mac . Est-ce qu'il me manque un fichier?
Officiellement aucun de ceux-ci. La méthode suggérée par Apple consiste à utiliser launchd . Guis pour mettre en place cela inclut lingon et Launch Control
En ce qui concerne les fichiers que vous mentionnez dans le répertoire de base ~/.bashrc, ~/profile, ~/.bash_profile ne sont démarrés que lorsque vous vous connectez via un terminal. Ceux de/etc sont exécutés par le shell à partir de tous les utilisateurs avant ceux du répertoire de base, mais uniquement lorsqu’un utilisateur se connecte. bash manual
Le script de démarrage Unix impliquait/etc/rc * mais pour OSX, utilisez simplement le truc launchd
Pour exécuter une commande au démarrage sous OS X, vous devez utiliser launchd
.
Si vous ne souhaitez pas utiliser Lingon , vous devez créer une liste de propriétés launchd
. Comme il s’agit d’un fichier XML, vous pouvez le faire avec votre éditeur de texte favori ou utiliser l’éditeur de liste de propriétés installé avec les outils de développement Mac OS X. Créez ce qui suit:
<?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
Cela obligera launchd à charger l'élément, ce qui lui permettra de démarrer MongoDB au démarrage. En prime, launchd
le surveillera et, s'il existe, quelle qu'en soit la raison, il sera redémarré. Pour supprimer l’élément, il suffit de remplacer load dans la commande ci-dessus par unload.
Une autre solution simple de Stack Overflow : Vous pouvez:
your_name.app
sera créé);Déconnectez-vous, reconnectez-vous et vous devriez avoir terminé. ;)
Pour lancer des commandes lors de la connexion, vous pouvez procéder comme suit:
Créez un fichier texte contenant vos commandes (script bash):
#!/bin/bash
# Start the MongoDB server
/Applications/MongoDB/bin/mongod --dbpath /usr/local/mongo/data --fork --logpath /usr/local/mongo/log
Enregistrer ce fichier dans ~/Library/Startup.cmd
chmod +x ~/Library/Startup.cmd
Vous devrez regarder comment launchd
et launchctl
fonctionnent sous MacOS. Vous pouvez commencer par lire les pages de manuel pour les deux commandes. Vous pouvez ensuite rechercher à l'intérieur de /Library/LaunchAgents/
et /Library/LaunchDaemons/
des exemples de configuration des applications à charger à différents moments via l'interface launchctl
.
Voici un exemple J'ai trouvé sur Stack Overflow qui pourrait vous aider davantage.
Si vous souhaitez une approche qui fonctionnera sous Linux et Mac OS X, une tâche périodique devrait suffire (modifiez vos tâches périodiques 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-start-up-in-freebsd )
J'étais intéressé par une réponse unix très simple à ce problème et je l'ai trouvé 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 bash avec le nom "profile", dans cet ordre:/etc/profile, ~/.bash_profile, puis ~/.bash_login et enfin ~/.profile. Lorsque les shells de connexion sont fermés, ils lisent ~/.bash_logout.
Dans mon cas, je viens de créer le fichier ~/.bash_profile, puis j'ai ouvert les préférences de l'application Mac Terminal et modifié l'option "Shell s'ouvre avec" de l'option par défaut en/bin/bash. C'est tout. Propre et simple.