Esegui il comando plist ogni 5 secondi

2

Ho il seguente file plist nella mia cartella User / Library / LaunchAgents. Preme il tasto "g" ogni 60 secondi.

La mia domanda è, come posso cambiare questo per premere il tasto "g" ogni 5 secondi?

<?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>
    <key>Program</key>
    <string>/usr/bin/osascript</string>
    <key>ProgramArguments</key>
    <array>
        <string>osascript</string>
        <string>-e</string>
        <string>tell application "System Events" to keystroke "g"</string>
    </array>
    <key>ServiceDescription</key>
    <string>Auto Keypress</string>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Second</key>
        <integer>0</integer>
    </dict>
</dict>
</plist>
    
posta Ryan 15.05.2011 - 07:27
fonte

2 risposte

2

Cambia il plist in

<?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>G-key-pusher</string>
    <key>Program</key>
    <string>/usr/bin/osascript</string>
    <key>Program</key>
    <string>/bin/sh</string>
    <key>ProgramArguments</key>
    <array>
        <string>sh</string>
        <string>-c</string>
        <string>while sleep 5; do /usr/bin/osascript -e 'tell application "System Events" to keystroke "g"'; done</string>
    </array>
    <key>ServiceDescription</key>
    <string>Auto Keypress</string>
    <key>KeepAlive</key>
    <true/>
</dict>
</plist>

Quello che fa è di eseguire uno script di shell che esegue il timer di 5 secondi e chiama osascript. Il launchd plist assicura che lo script venga riavviato se dovesse morire per qualche motivo. Si prega di notare che non ho ancora testato questo, ma non vedo alcun motivo per cui non dovrebbe funzionare. Anche se ho avuto problemi in passato quando cambiavo gli oggetti lanciati, che ho risolto cambiando l'etichetta. Il che mi ricorda che hai omesso il valore della chiave Label nel tuo plist.

(Modifica: spiega un po 'e fornisci un file completo invece di spiegare quali parti devono essere cambiate.)

    
risposta data 15.05.2011 - 10:51
fonte
2

So che questo è un thread molto vecchio, ma è emerso in una delle mie ultime ricerche per il consiglio di launchctl, quindi volevo includere la risposta corretta avviando ogni "x" secondo. launchctl può essere usato come cron (solo meglio). Nel tuo script originale, usi la chiave "StartCalendarInterval". Devi semplicemente usare il tasto "StartInterval" e dargli il numero di secondi.

Sostituisci le tue linee:

<key>StartCalendarInterval</key> <dict>
    <key>Second</key>
    <integer>0</integer> </dict>

Con:

<key>StartInterval</key>
<integer>5</integer>
<key>ThrottleInterval</key>
<integer>0</integer>
    
risposta data 19.08.2013 - 20:07
fonte

Leggi altre domande sui tag