Comment exécuter une tâche launchd chaque week-end?

0

J'essaie de lancer un programme ruby ​​en tant que cron. J'ai compris comment exécuter le programme ruby ​​à partir d'un lancement. Le problème est que je ne sais pas comment dire "Exécuter le travail une fois tous les dimanches". Ci-dessous mon fichier .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>EnableGlobbing</key>
    <false/>
    <key>Label</key>
    <string>ScratchFolders.job</string>
    <key>ProcessType</key>
    <string>Background</string>
    <key>Program</key>
    <string>/usr/local/rvm/wrappers/scratch-monitor/ruby</string>
    <key>ProgramArguments</key>
    <array>
        <string></string>
        <string>scratch-clean.rb</string>
    </array>
    <key>StandardErrorPath</key>
    <string>/tmp/ScratchFolders.job.err</string>
    <key>StandardOutPath</key>
    <string>/tmp/ScratchFolders.job.out</string>
    <key>StartCalendarInterval</key>
    <array>
        <dict>
            <key>Weekday</key>
            <integer>7</integer>
        </dict>
    </array>
    <key>WorkingDirectory</key>
    <string>~/automation-scripts/</string>
</dict>
</plist>
Chan
la source

Réponses:

1

Le premier et le plus gros problème est que vous utilisez les touches Programet ProgramArgumentsincorrectement. Ils sont plutôt déroutants car ils correspondent aux deux premiers arguments de execvp, et à moins que vous ne compreniez execvp, vous ne comprendrez pas ces clés correctement. Mais il existe un moyen simple de le faire dans la plupart des cas: n'utilisez pas Program, et mettez le chemin complet du programme dans la première chaîne dans ProgramArguments:

<key>ProgramArguments</key>
<array>
    <string>/usr/local/rvm/wrappers/scratch-monitor/ruby</string>
    <string></string>
    <string>scratch-clean.rb</string>
</array>

(Remarque: je suppose que vous essayez de passer un premier argument vide au programme - sinon, supprimez le <string></string>.)

Le deuxième problème que je vois est la WorkingDirectoryclé - je suis à peu près sûr que cela ne se développera pas ~dans ce contexte, vous devez donc spécifier explicitement le chemin complet:

<key>WorkingDirectory</key>
<string>/Users/chan/automation-scripts/</string>

Enfin, je pense que vous devrez peut-être aussi spécifier l’heure et la minute pour le démarrer à:

<key>StartCalendarInterval</key>
<dict>
    <key>Weekday</key>
    <integer>7</integer>
    <key>Hour</key>
    <integer>3</integer>
    <key>Minute</key>
    <integer>15</integer>
</dict>
Gordon Davisson
la source