2 votos

10.11.3 - launchd para iniciar un trabajo, ya sea al inicio o a la hora del día

Estoy intentando utilizar launchd tener el control de sí mismo ser activo, de 8am a 8pm. Mi primer intento fue el de usar sólo launchd y tener un poco de bash script que inicia el control de sí mismo (de 12 horas) a las 8 am, pero esto no es realmente lo suficientemente flexible porque si mi laptop se apaga a las 8 am, obviamente, no sucede nada.

Cualquier consejo sobre la mejor forma de abordar este problema o modificar mi enfoque actual?

Aquí está la .plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" \
 "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
     <string>my.selfControlScheduler</string>
  <key>Program</key>
     <string>/Users/ira/Documents/coding/self_control/sc_sched.sh</string>
  <key>StartCalendarInterval</key>
     <dict>
     <key>Hour</key>
     <integer>8</integer>
     <key>Minute</key>
     <integer>0</integer>
     </dict>
</dict>
</plist>

Y aquí está el script de bash

sudo /Applications/SelfControl.app/Contents/MacOS/org.eyebeam.SelfControl $(id -u $(whoami)) --install

La longitud de tiempo para bloquear la lista negra en el dominio de sí mismo para que pueda ser establecido por hacer

defaults write org.eyebeam.SelfControl "BlockDuration"=xxx

Creo que esa es toda la información relevante

1voto

Oskar Puntos 1242

Usted debe ser capaz de controlar este con dos diferentes launchd puestos de trabajo.

  • un trabajo para comenzar a diario a las 8 am
  • otro trabajo a descargar el primero en hora de dejar de fumar (8 pm)

Si la aplicación no esperar a ser cargado/descargado (como mongodb ¿si se instala desde homebrew), a continuación, cambie el segundo script para llamar su "matar" secuencia de comandos.

Yo soy de la mente llamar a justos /usr/bin/killall SelfControl si que funciona, en lugar de ensuciar con la inclusión de un modo enrevesado AppleScript ejemplo /usr/bin/osascript , como en el ejemplo aquí:

/usr/bin/osascript -e 'tell application "Mathematica" to quit'

Esto es mucho más robusto que el de hacer un script de ayuda que necesita para mantenerse en funcionamiento desde launchd mantiene un registro del tiempo que pasa cuando se apaga y/o dormir y debe fuego las cosas más tarde (es decir 23:30) si se despierta a la Mac del sueño a partir de las 6 pm.

Yo uso LaunchControl o Lingon aplicación para gestionar mis archivos plist - pero usted puede entregar el rollo de ellos como su pregunta.

El segundo es más corto, así que he llamado org.usted.de control.descargar y simplemente llama launchctl unload org.you.control.load a 20:00 y el conjunto de la RunAtLoad a /false tan sólo se activa por el reloj.

<dict>
    <key>Label</key>
    <string>org.you.control.unload</string>
    <key>ProgramArguments</key>
    <array>
        <string>launchctl</string>
        <string>unload</string>
        <string>org.you.control.load</string>
    </array>
    <key>RunAtLoad</key>
    <false/>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Hour</key>
        <integer>20</integer>
        <key>Minute</key>
        <integer>0</integer>
    </dict>
</dict>

Sólo decidir los nombres que desee: org.usted.de control.de carga o ** mi.selfControlScheduler** ambos están bien, pero elegir un idioma y se pega con él en todo.

Su inicio plist ve bien, pero podría haber permisos u otros problemas que una herramienta para depurar las cosas sin necesidad de una referencia muy útil como http://launchd.info

En lugar de secuencia de comandos de la apertura de la aplicación, simplemente llame a /usr/bin/open -a SelfControl sería mi sugerencia, si el tuyo no está funcionando en la actualidad.

<string>org.you.control.load</string>
<key>ProgramArguments</key>
<array>
    <string>/usr/bin/open</string>
    <string>-a</string>
    <string>SelfControl</string>
</array>

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X