No puedo hacer que mi demonio de inicio ejecute mi script de shell

0

Por alguna razón, no puedo hacer que mi shell script se ejecute cuando la computadora arranca. Mi script está bien por sí solo, pero por alguna razón mi Launch Daemon no está iniciando el trabajo. Por favor ayuda.

Mi demonio de lanzamiento se guarda en /Library/LaunchDaemons/local.pingtest.plist

My Launch Daemon Plist:

<?xmlversion="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>local.pingtest</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/sh</string>
        <string>/pingtest/pingtest.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

mi script de shell:

/usr/bin/nohup /sbin/ping -i 5 ipaddress | /usr/bin/xargs -L 1 -I '{}' date '+%Y-%m-%d %H:%M:%S: {}' >> /pingtest/Ryan-lou.txt &

/usr/bin/nohup /sbin/ping -i 5 www.google.com | /usr/bin/xargs -L 1 -I '{}' date '+%Y-%m-%d %H:%M:%S: {}' >> /pingtest/Ryan-int.txt &

/usr/bin/nohup /sbin/ping -i 5 ipaddress | /usr/bin/xargs -L 1 -I '{}' date '+%Y-%m-%d %H:%M:%S: {}' >> /pingtest/Ryan-fcc.txt &
    
pregunta rdweise76 02.12.2016 - 16:07

2 respuestas

1

Primero verificaba la ruta de pingtest.sh en relación a cómo se define en local.pingtest.plist.

Todavía no he jugado con el demonio de lanzamiento en Mac, pero puede haber alguna necesidad especial de que esté en / System / Library / LaunchDaemons en su lugar. No estoy seguro de por qué terminaría ignorando la otra ubicación en el momento en que inicias sesión y mirándolo, pero he visto las especificaciones ignoradas antes en los sistemas que vale la pena intentarlo.

A continuación, verifico si hay identificadores de etiqueta en conflicto y que mis otras claves significan lo que creo que significan.

No parece que tu secuencia de comandos dependa de demonios que no sean launchd, pero esas son cosas que debes tener en cuenta.

    
respondido por el Drew 02.12.2016 - 17:23
0

"Analizando" el script launchctl emite un error "nohup: no se puede desconectar de la consola: ioctl inadecuado para el dispositivo" y espera otro comando después del último & .

Agrega un shebang adecuado y elimina la parte /usr/bin/nohup así como el último & en tu script de shell y funciona:

#!/bin/sh

/sbin/ping -i 5 www.google.com | /usr/bin/xargs -L 1 -I '{}' date '+%Y-%m-%d %H:%M:%S: {}' >> /pingtest/Ryan-lou.txt &
/sbin/ping -i 5 ip1 | /usr/bin/xargs -L 1 -I '{}' date '+%Y-%m-%d %H:%M:%S: {}' >> /pingtest/Ryan-int.txt &
/sbin/ping -i 5 ip2 | /usr/bin/xargs -L 1 -I '{}' date '+%Y-%m-%d %H:%M:%S: {}' >> /pingtest/Ryan-fcc.txt
    
respondido por el klanomath 03.12.2016 - 02:33

Lea otras preguntas en las etiquetas