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

Ejecutar el comando al iniciar / iniciar sesión (Mac OS X)

Me preguntaba en qué archivo debo colocar este comando bash para que se ejecute al iniciar.

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

He estado rastreando la red y creo que está entre ~/.bashrc, ~/profile, /etc/bashrc, /etc/profile o ~/.bash_profile. Aunque he probado estos y parece que se ejecutan en el inicio de la terminal no en el inicio del Mac. ¿Me falta algún archivo?

Respuestas (8)

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

Para ejecutar un comando al inicio en OS X, necesita usar launchd.

Si no quiere usar Lingon , necesita crear una Lista de Propiedades launchd. Se trata de un archivo XML, por lo que puede hacerlo con su editor de texto favorito o, alternativamente, puede utilizar el Editor de Listas de Propiedades que se instala con las Herramientas de Desarrollo de Mac OS X. Cree lo siguiente:

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

Guarde esto en /Library/LaunchAgents/some.meaningful.name.plist (necesitará una cuenta de administrador y/o sudo), luego abra una terminal y haga:

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

Esto hará que launchd cargue el elemento que hará que inicie MongoDB al arrancar. Como extra, launchd lo monitorizará y, si sale por cualquier razón, se reiniciará. Para deshacerse del elemento simplemente sustituya load en el comando anterior por unload.

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

Otra solución sencilla de Stack Overflow : Puedes:

  • Iniciar Automator.app;
  • Seleccionar “Aplicación”;
  • Hacer clic en “Mostrar biblioteca” en la barra de herramientas (si está oculta);
  • Añadir “Ejecutar script de shell” (desde las Acciones/Utilidades);
  • Copiar y pegar tu script en la ventana;
  • Probarlo;
  • Guardarlo en algún sitio: se creará un archivo llamado your_name.app);
  • Dependiendo de tu versión de MacOSX:
  • Versiones antiguas: Vaya a Preferencias del Sistema → Cuentas → Elementos de inicio de sesión, o
  • Nueva versión: Vaya a Preferencias del sistema → Usuarios y grupos → Elementos de inicio de sesión (arriba a la derecha);
  • Añada esta aplicación recién creada;

Cierre la sesión, vuelva a iniciarla y ya debería haber terminado. ;)

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

Oficialmente ninguno de estos. La forma sugerida por Apple es usar launchd . Las guías para configurar esto incluyen lingon y Launch Control

En cuanto a los archivos que mencionas los que están en el directorio home ~/.bashrc, ~/profile, ~/.bash_profile sólo se inician cuando te conectas a través de un terminal. Los que están en /etc son ejecutados por el shell iniciando para todos los usuarios antes que los del directorio home pero sólo cuando se hace un login de usuario.. manual de bash

El script de inicio de Unix involucraba a /etc/rc* pero para OSX solo usa el material de launchd

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

Para lanzar los comandos al iniciar la sesión, puede hacer lo siguiente

  • Crear un archivo de texto que contenga sus comandos (script bash):

  • Guardar este archivo en ~/Library/Startup.cmd

  • Puede probarlo haciendo doble clic en el archivo en el Finder

  • Hacerlo ejecutable: chmod +x ~/Library/Startup.cmd

  • Añada este archivo en Preferencias del Sistema > Cuentas > Elementos de inicio de sesión

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

Si desea un enfoque que funcione en Linux y Mac OS X, una tarea cron debería ser suficiente (edite sus tareas cron ejecutando crontab -e):

@reboot /path/to/script

(créditos: 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

Tendrás que mirar cómo funcionan launchd y launchctl en MacOS. Puedes empezar leyendo las páginas man de ambos comandos. Luego podrías buscar dentro de /Library/LaunchAgents/ y /Library/LaunchDaemons/ ejemplos de cómo configurar las aplicaciones para que se carguen en diferentes momentos a través de la interfaz de launchctl. Aquí hay un ejemplo que encontré en Stack Overflow que podría ayudarte más.

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

Estaba interesado en una respuesta unix muy simple a este problema y la encontré en otro sitio . Aquí está un resumen de la solución.

El estándar para los shells de inicio de sesión es buscar siempre los archivos de configuración de bash con “profile” en el nombre, en este orden: /etc/profile, ~/.bash_profile, luego ~/.bash_login y por último ~/.profile. Cuando los shells de login salen, leen ~/.bash_logout.

En mi caso sólo creé el ~/.bash_profile y luego abrí las preferencias de la aplicación Mac Terminal y cambié la opción “Shell opens with” de predeterminada a /bin/bash. Y ya está. Limpio y sencillo.

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

abra el terminal, escriba

nano ~/.bash_profile

luego añada este texto al archivo:

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