[launchd] Problem mit selbst erstelltem User Agent

Bozol

Aktives Mitglied
Thread Starter
Dabei seit
16.07.2003
Beiträge
3.491
Reaktionspunkte
2.206
Hallo zusammen, ich habe ein Problem.

Da DSW von Arzahi mit dem aktuellen OSX nicht mehr läuft versuche ich die Aufgabe mittels Launchd zu lösen.

Es soll, wenn das NAS läuft (es läuft nicht 24/7), per Shellscript regelmässig eine Auflistung div. Directories als Textfile erstellt werden.

Das klappt bei laufendem NAS gut, hat aber einen Schönheitsfehler: Der Task läuft weiter obwohl der mittels PathState vorgegebene Pfad nicht (mehr) existiert, weil z. B. die Freigabe mittlerweile ausgeworfen oder das NAS gar nicht gestartet wurde. Trotzdem wird das Textfile erzeugt welches aber dann keinen Inhalt mehr hat.

Hier meine .plist, zusammengeklickt mittels LaunchControl:

Code:
<?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>Disabled</key>
   <false/>
   <key>KeepAlive</key>
   <dict>
     <key>PathState</key>
     <dict>
       <key>/Volumes/Filme/</key>
       <true/>
     </dict>
   </dict>
   <key>Label</key>
   <string>net.fred.local.listeNAS</string>
   <key>Program</key>
   <string>/Users/fred/Library/Scripts/VideosaufNAS</string>
   <key>ThrottleInterval</key>
   <integer>1800</integer>
</dict>
</plist>

Danke fürs lesen, freue mich über jeden Tipp.

Gruss,

Fred
 
was steht denn im script?
läuft das endlos oder wird das alle 1800 secs kurz aufgerufen und beendet?
 
Hi Olivetti,
das Script besteht grob gesagt aus mehrfachen "ls -URlT abc > xyz.txt" Aufrufen und zum Schluss werden die einzelnen Textfiles mittels cat verbunden. Danach ist das Script durch und wird nach der Wartezeit erneut aufgerufen. Leider auch wenn die Shares nicht mehr da sind...
 
also bei mir geht das schon mal mit throttle "10" und pfad "/test/a", angelegt mit cd /test; mkdir a, sleep 15, rmdir a.
ich teste das später mal mit einem realen smb share in /Volumes, evtl. liegt es daran oder du hast einen bug in osx 10.11 erwischt.
 
So wie ich KeepAlive verstehe, wird der Job immer erst ausgeführt und dann geprüft, ob er "am Leben" bleiben soll, d.h. dein script wird immer mindestens 1 mal ausgeführt, auch dann wenn das Volume gar nicht gemountet und auch dann, wenn dein Volume ausgeworfen wurde. Erst _nach_ dem 1. Lauf stellt sich die Frage: "Am Leben bleiben?"

Probiere mal die Variante, in der plist das KeepAlive heraus zu nehmen, das ThrottleInterval durch StartInterval zu ersetzen und in deinem Script einfach gleich zu Beginn einen Test auf den Pfad zu machen, in der Art:

Code:
test -e /Volumes/Filme || exit

Das sollte auf jeden Fall laufen.
 
nein, mit pathstate geht's genau andersrum. erst wird auf [[ -d path ]] getestet, dann ausgeführt (siehe #4).
 
Hallo lisanet, mit Deinen Änderungen funktioniert es. Vielen Dank an Dich und an Olivetti.
@Olivetti: hat Dein Test mit der SMB Share noch funktioniert?

Gruss, Fred.
 
ich kam noch nicht dazu.

wenn du aus "test -e ..." "test -d ..." machst, wird nur auf directory getestet.
 
Zurück
Oben Unten