Launchd nur planmäßig ausführen, nicht neu starten?

Ich habe ein Skript, das ich täglich auf 3:30 Uhr einstellen möchte, und es wird zur eingestellten Zeit ausgeführt, aber es wird auch bei jedem Neustart des Computers ausgeführt, was ich nicht möchte.

Wie kann ich dies mit nur dem Zeitplan zum Laufen bringen und nicht bei jedem Start des Computers ausführen?

Hier ist meine Liste:

<?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.xxxxx.xxxx</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Library/Scripts/script.sh</string>
    </array>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Minute</key>
        <integer>30</integer>
        <key>Hour</key>
        <integer>3</integer>
    </dict>
</dict>
</plist>
Ich glaube, ich kenne das Problem jetzt. Kann ich launchd leeren? Ich habe mit einem Skript getestet und es funktionierte beim Neustart. Dann habe ich das Skript mit dem Zeitplan angepasst und es tat es immer noch beim Neustart. Für einen Test habe ich die Aufgabe launchd .plist vollständig entfernt und den Computer neu gestartet, und das Skript wurde immer noch ausgeführt. Es scheint sich also an die Aufgabe zu erinnern, obwohl ich sie gelöscht habe. Kann launchd gelöscht oder geleert werden, da die .plist-Datei überhaupt nicht mehr vorhanden ist, wenn sie noch ausgeführt wird?

Antworten (2)

Sie müssen einen Schlüssel "Run at Load" hinzufügen und auf "false" setzen.

<key>RunAtLoad</key>
<false/>

Dadurch wird die Ausführung beim Start und nur zu Ihrer manuell festgelegten Zeit verhindert.

Ich habe es wie hier zu sehen hinzugefügt, aber kein Glück.<dict> <key>RunAtLoad</key> <false/> <dict>
Sobald ich herausgefunden habe, wie man launchd löscht/löscht, werde ich es noch einmal versuchen. Sehr gut, vielleicht funktioniert es, aber ich weiß es nicht, da die vorherige Aufgabe hängen bleibt / sich daran erinnert.

Danke an alle, das hat gerade funktioniert! Die erste Antwort hat funktioniert. Mein Problem war, dass ich die erste launchd .plist nicht entladen habe, obwohl ich die Datei gelöscht habe. Es erinnert sich bei jedem Neustart daran.

Am Ende habe ich zwei iMacs neu erstellt und die launchd .plist mit dem hinzugefügten Befehl getestet.

Getestet mit Laden und Entladen, um es zu bestätigen. Nach unzähligen Neustarts und dem Einstellen der Uhr, um sie dann immer wieder zu testen, kann ich bestätigen, dass sie so funktioniert, wie wir es brauchen :)

Der Computer kann beliebig neu starten, führt das Skript jedoch erst zur geplanten Zeit aus.

Da die Antworten nach Stimmen, Zeit oder Aktivität sortiert werden können, verlinken Sie bitte auf bestimmte Antworten, anstatt "zuerst" zu sagen. Wenn Sie auch den Befehl auflisten könnten, den Sie zum Entladen der Plist verwendet haben, hilft dies Leuten, die später hier ankommen und nicht verstehen können, welche Sequenz das Problem tatsächlich gelöst hat.