Ejecutar el comando plist cada 5 segundos

2

Tengo el siguiente archivo plist en mi carpeta User / Library / LaunchAgents. Presiona la tecla "g" cada 60 segundos.

Mi pregunta es, ¿cómo puedo cambiar esto para presionar la tecla "g" cada 5 segundos?

<?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>
    
pregunta Ryan 15.05.2011 - 07:27

2 respuestas

2

Cambia la lista a

<?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>

Lo que hace es ejecutar un script de shell que ejecuta el temporizador de 5 segundos y llama a osascript. El launchd plist solo asegura que el script se reinicie si fuera a morir por alguna razón. Tenga en cuenta que todavía no he probado esto, pero no veo ninguna razón por la que no debería funcionar. Aunque he tenido problemas en el pasado al cambiar los elementos de lanzamiento, que solucioné cambiando la etiqueta. Lo que me recuerda que omitiste el valor de la clave Label en tu lista.

(Editar: explique un poco y proporcione un archivo completo en lugar de explicar qué partes deben cambiarse).

    
respondido por el Harald Hanche-Olsen 15.05.2011 - 10:51
2

Sé que este es un tema muy antiguo, pero surgió en una de mis búsquedas recientes de consejos de launchctl, así que quería incluir la respuesta correcta lanzando cada "x" segundos. launchctl puede ser usado como cron (solo mejor). En su script original, use la clave "StartCalendarInterval". Simplemente debe usar la tecla "StartInterval" y darle la cantidad de segundos.

Reemplaza tus líneas:

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

Con:

<key>StartInterval</key>
<integer>5</integer>
<key>ThrottleInterval</key>
<integer>0</integer>
    
respondido por el Matthew Du Puy 19.08.2013 - 20:07

Lea otras preguntas en las etiquetas