2 votos

Escribir cron script para abrir y salir de la aplicación

Estoy intentando escribir un script que abra una nueva instancia de safari, muestre una página web durante 10 minutos y luego salga de safari.

Creo que puedo seguir esto Intercambio de pilas para hacer los pasos 1 y 2 de mi objetivo.

Para el "trozo de pantalla de 10 minutos", no estaba seguro de cómo hacer eso, excepto para programar un trabajo cron separado para salir de safari que se ejecuta 10 minutos después de la primera script.

¿Alguna idea de cómo escribir un cron script para salir de safari? O para hacer este proceso más fácil? Soy un novato en cron y me encantaría aprender más.

Gracias.

6voto

user3439894 Puntos 5883

Como ejemplo, lo siguiente comandos puede utilizarse en un shell script para lograr lo que has expresado.

/usr/bin/open -na "/Applications/Safari.app" "https://www.google.com/"
pid=$(/usr/bin/pgrep -xn "Safari")
/bin/sleep 600
/bin/kill $pid

Obviamente se cambiaría el valor de la URL en el open comando .

  • open -na - Suponiendo que otra instancia del aplicación de destino se está ejecutando, abre una nueva instancia del aplicación de destino y si no, simplemente abre el aplicación de destino .
  • pgrep -xn - Obtiene el pid de la instancia más reciente del aplicación de destino para que sepas qué instancia debes terminar.
  • sleep 600 - Duerme durante 10 minutos.
  • kill $pid - Terminar el proceso por su pid .

Desde el página del manual para crontab :

(Nota de Darwin: Aunque cron(8) y crontab(5) están oficialmente soportados en Darwin, su funcionalidad ha sido absorbida por launchd(8), que proporciona una forma más flexible de ejecutar automáticamente los comandos. Consulte launchctl(1) para más información).

Menciono esto porque personalmente prefiero usar launchd en cron ya que es el método preferido que Apple respalda.

Si desea utilizar cron , echa un vistazo a Programación de trabajos con Crontab en MacOS y gurú del crontab .

He probado un shell script con lo anterior comandos y lo activó tanto como cronjob y como agente de lanzamiento en MacOS Catalina y me ha funcionado tal y como está codificado.

Para crear el crontab Hice lo siguiente en Terminal :

EDITOR=nano crontab -e
  • Utilizo eso en lugar de sólo crontab -e porque prefiero nano sobre el valor por defecto vim .

En nano He añadido lo siguiente:

30 18 * * * /usr/local/bin/codetest

Luego presionó ^O para ahorrar y ^X para cerrar nano .

Como el conjunto, cron corrió el trabajo a las 18:30 ejecutando el /usr/local/bin/codetest y codetest tenía un #!/bin/zsh shebang y el comandos arriba, al principio de esta respuesta, en ella.

Notas:

Le recomiendo que lea el páginas del manual para cron y crontab . Puede leer el página del manual para command en Terminal tecleando command y luego haga clic con el botón derecho del ratón y seleccione: Abrir la página del hombre

Desde Programación de trabajos con Crontab en MacOS :

La configuración de las tareas cron requiere un formato específico.

* * * * * command
* - minute (0-59)
* - hour (0-23)
* - day of the month (1-31)
* - month (1-12)
* - day of the week (0-6, 0 is Sunday)
command - command to execute

(from left-to-right)

También puede utilizar sitios como Crontab.guru para generar expresiones cron.


Para launchd , echa un vistazo: Creación de Daemons y Agentes de Lanzamiento

Como agente de lanzamiento , en Terminal :

cd "$HOME/Library/LaunchAgents/"
touch com.me.new.instance.safari.plist
open -e com.me.new.instance.safari.plist

Luego añadí lo siguiente:

<?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.me.new.instance.safari</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/codetest</string>
    </array>
    <key>RunAtLoad</key>
    <false/>
    <key>StartCalendarInterval</key>
    <array>
        <dict>
            <key>Hour</key>
            <integer>18</integer>
            <key>Minute</key>
            <integer>45</integer>
        </dict>
    </array>
</dict>
</plist>

Salvó la documento y luego de vuelta en Terminal :

launchctl load com.me.new.instance.safari

Luego, a las 18:45 launchd ejecutó la /usr/local/bin/codetest shell script .


Notas:

Le recomiendo que lea el páginas del manual para launchctl , launchd.plist y launchd . Puede leer el página del manual para command en Terminal tecleando command y luego haga clic con el botón derecho del ratón y seleccione: Abrir la página del hombre

Una vez cargado, se cargará automáticamente cuando accedas a tu cuenta, por lo que no deberías tener que volver a hacerlo manualmente en circunstancias normales. Para descargarlo, utilice el botón unload subcomando con el launchctl comando .

Después de descargarlo, puede utilizar el disable subcomando para que no se vuelva a cargar o puedes borrar el archivo . plist archivo Si quieres deshacer los cambios que has hecho en tu sistema .

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