Cómo ejecutar un script en el inicio y apagado OS X El Capitan

5

En realidad, quiero hacer una unidad de RAM relacionada con este script en mi Mac.

Esto es lo que hice:

  1. SIP deshabilitado en modo de recuperación usando el comando "csrutil"
  2. Creó un archivo plist en / Library / LaunchDaemons /
    e ingresó launchctl -w /Library/LaunchDaemons/vn.magik.ramdisk.plist

    <?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>vn.magik.ramdisk</string>
            <key>ProgramArguments</key>
                <array>
                  <string>/Users/khacpm/ramdisk.sh</string>
                </array>
            <key>RunAtLoad</key>
                <true/>
            <key>StandardOutPath</key>
                <string>/Users/khacpm/ramdisk.log</string>
            <key>StandardErrorPath</key>
                <string>/Users/khacpm/ramdisk.err</string>
        </dict>
    </plist>
    
  3. Creé el archivo .sh y lo puse en ~ / ramdisk.sh

    código:

    function fstartup()
    {
        //put folder into ramdisk
    }
    function fshutdown()
    {
        //detach ramdisk
    }
    
    function framdisk()
    {
        //do something
    }
    trap fshutdown SIGTERM
    trap fshutdown SIGKILL
    fstartup;
    

El problema es que la función fstartup se ejecuta bien, pero parece que la función no está activada por el sistema.

    
pregunta Anh Bảy 03.10.2015 - 15:04

2 respuestas

1

Creo que la corrección al script de shell debería ser:

function fstartup()
{
    //put folder into ramdisk
     tail -f /dev/null &
     wait $!
}
function fshutdown()
{
    //detach ramdisk

}

function framdisk()
{
    //do something
}
trap fshutdown SIGTERM
trap fshutdown SIGKILL
fstartup;

Para que espere durante el inicio, no el cierre.

Actualmente estoy ejecutando mi versión y parece que funciona bien, ejecuta correctamente la función de apagado cuando la computadora se apaga.

    
respondido por el Andrew Wright 20.09.2017 - 21:57
0

Encontré un error en mi script: Faltan estas líneas en la función fshutdown:

tail -f /dev/null &
wait $!

la función correcta es:

function fstartup()
{
    //put folder into ramdisk
}
function fshutdown()
{
    //detach ramdisk
     tail -f /dev/null &
     wait $!
}

function framdisk()
{
    //do something
}
trap fshutdown SIGTERM
trap fshutdown SIGKILL
fstartup;

base en documento de Apple , cuando el sistema se cierra hacia abajo, envía una señal SIGTERM a todos los demonios que comenzó.
Pero mi antiguo script se ejecutará y se cerrará después de que se inicie.
Debe activar su secuencia de comandos y esperar la señal de Sigterm agregando algunas funciones como "dormir" o "esperar" para que la secuencia de comandos esté activa.

    
respondido por el Anh Bảy 06.10.2015 - 08:44

Lea otras preguntas en las etiquetas