Non riesco a ottenere il mio daemon di lancio per eseguire il mio script di shell

0

Per qualche motivo, non riesco a far eseguire lo script della shell all'avvio del computer. Il mio script va bene da solo, ma per qualche ragione il mio Launch Daemon non sta iniziando il lavoro. Per favore aiuto.

Il mio daemon di avvio è salvato in /Library/LaunchDaemons/local.pingtest.plist

Il mio demone di lancio 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>

lo script della mia 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 &
    
posta rdweise76 02.12.2016 - 16:07
fonte

2 risposte

1

Per prima cosa controllerei il percorso di pingtest.sh in relazione a come è definito in local.pingtest.plist.

Non ho ancora giocato con il demone di lancio sui Mac, ma potrebbe esserci qualche necessità speciale di trovarsi in / System / Library / LaunchDaemons. Non sono sicuro del motivo per cui finirebbe per ignorare l'altra posizione prima che tu abbia effettuato l'accesso e guardandola ma ho visto le specifiche ignorate prima sui sistemi, quindi vale la pena provarci.

Successivamente verificherei elementi come identificativi di Label in conflitto e le mie altre chiavi significano ciò che penso significano.

Non sembra che il tuo script dipenda da demoni non launchd, ma questi sono cose da tenere a mente.

    
risposta data 02.12.2016 - 17:23
fonte
0

"Parsing" lo script launchctl genera un errore "nohup: non può staccare dalla console: ioctl inappropriato per il dispositivo" e si aspetta un altro comando dopo l'ultimo & .

Aggiungi uno shebang appropriato e rimuovi la parte /usr/bin/nohup e l'ultima & nello script della shell e funziona:

#!/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
    
risposta data 03.12.2016 - 02:33
fonte

Leggi altre domande sui tag