23 votos

cómo obtener los scripts de shell para ejecutar al inicio de Yosemite

Hay un directorio en el Sistema/Librería de elementos de inicio presumo: StartupItems

Necesito un script de shell que va a configurar la interfaz ethernet en el arranque, con la dirección de red y máscara de subred. Necesito hacer esto porque el preferencias de red para configurar la interfaz ethernet NO se el uso de la configuración de forma manual. ESTO parece ser un error grave, o mi instalación es mala.

Me dieron el consejo de usar networksetup desde la línea de comandos, pero que no configurar la interfaz ethernet de tal manera que las configuraciones estarán allí en el reinicio.

El script necesita para hacer su trabajo con privilegios de root o con sudo, pero me estoy asumiendo que si se utiliza sudo, habrá un diálogo de contraseña presentado en el momento de arranque cuando el proceso de arranque se pone para que la secuencia de comandos.

(He tenido suficiente experiencia con FreeBsd y Linux, para encontrar mi camino alrededor de la en la terminal, pero no necesariamente como se aplica a Mac OSX)

20voto

andonuts Puntos 187

Una forma de hacerlo sería la asignación de la secuencia de comandos de un launchd servicio:

Crear la secuencia de comandos shell como de costumbre. Entonces usted puede hacer un launchd servicio para que se ejecute al inicio. Aquellos que se encuentran en /Library/LaunchDaemons. Estos se encuentran en la propiedad XML formato de lista. Crear otro y rellenar con algo como esto:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>Label</key>
        <string>com.example.app</string>
        <key>ProgramArguments</key>
        <array>
            <string>/bin/sh</string>
            <string>/path/to/script</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>KeepAlive</key>
        <false/>
    </dict>
</plist>

Cambio com.example.app, /bin/sh y /path/to/script como se requiere.

La secuencia de comandos, a continuación, ejecutar durante el arranque del sistema. Si se agota demasiado pronto, usted puede escribir la secuencia de comandos para probar y hacer lo que tiene que hacer hasta que lo consiga, o tener que salir con un valor distinto de cero el código de error y añadir esto a la lista de la propiedad antes de la </dict> línea de:

<key>KeepAlive</key>
<dict>
     <key>SuccessfulExit</key>
     <false/>
</dict>

Para más información sobre OS X de lanzamiento de los demonios y de los servicios, sugiero mirar aquí para una buena referencia rápida de hacer de ellos, o aquí para una información más completa referencia sobre lo que launchd puede hacer.

19voto

sjosen Puntos 109

Hace algún tiempo que he utilizado cron para hacer precisamente eso. Usted puede hacer una entrada como esta

@reboot /path/to/my/script

Más info aquí

En lugar de los cinco primeros campos, uno de los ocho especiales cadenas pueden aparecer:

       string          meaning
       ------          -------@reboot ------@reboot
       @reboot         Run once, at startup.
       @yearly         Run once a year, "0 0 1 1 *".
       @annually       (same as @yearly)
       @monthly        Run once a month, "0 0 1 * *".
       @weekly         Run once a week, "0 0 * * 0".
       @daily          Run once a day, "0 0 * * *".
       @midnight       (same as @daily)
       @hourly         Run once an hour, "0 * * * *".

-3voto

Sebas Puntos 282

Echa un vistazo a login script gancho.

https://wiki.afp548.com/index.php/Login/Logout_Hooks_in_OS_X

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X