8 votos

Ejecutar script como root en el inicio - macOS 10.12 Sierra

He intentado de todo y parece que no puede conseguir mi script para que se ejecute al inicio. La modificación de la .bashrc, .bash_profile, etc que ruta me hizo nada. Entonces traté de cron puestos de trabajo, sin suerte. Luego he estado tirando de mi cabello tratando de usar la launchd función. He hecho un lanzamiento del demonio, que es supuestamente el de las funciones de root, pero eso no es suerte. Como un último intento, incluso traté de Automator no hubo suerte.

El archivo que se desea ejecutar como root es: "/Users/CURRENT_USER/Dev/my_script.sh"

Aquí es lo que tengo en mi LaunchDaemons carpeta:

<?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>com.startup.script</string>
    <key>LaunchOnlyOnce</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
        <string>sh</string>
        <string>-c</string>
        <string>/Users/CURRENT_USER/Dev/my_script.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>UserName</key>
    <string>root</string>
</dict>
</plist>

6voto

klanomath Puntos 19587

~/Library/LaunchDaemons no existe. Lanzamiento de un demonio en /Library/LaunchDaemons ya está ejecutado con privilegios de root por lo que puede omitir el nombre de Usuario parte.

Así que poner el script de shell my_script.sh en /usr/local/bin/ o en /usr/bin/ (ajustar la ruta de acceso en la ProgramArguments matriz si usa la última), hacerlo ejecutable con sudo chmod +x ... y propiedad de root:rueda con sudo chown root:wheel .... /usr/bin es recomendable si la cerveza está instalado.

Modificar su actual 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>com.startup.script</string>
    <key>LaunchOnlyOnce</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
        <string>sh</string>
        <string>-c</string>
        <string>/usr/local/bin/my_script.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

Guardar el lanzamiento demonio como com.inicio.secuencia de comandos.plist en /Library/LaunchDaemons/ y propiedad de root:wheel.

Ejecutarlo con:

sudo launchctl load /Library/LaunchDaemons/com.startup.script.plist

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