6 votos

Cómo esperar hasta que la conexión a internet, antes de la puesta en marcha de "inicio de sesión"elemento de

Mi Flojera y un par de otras aplicaciones, se inicia automáticamente al iniciar sesión en mi Macbook, ya que figuran en el apartado "elementos de inicio de sesión". Sin embargo, algunos, como la Parafina, se lanzará antes de que el internet está conectado, y que les lleva a la trituradora. ¿Hay alguna manera de retrasar el lanzamiento de las aplicaciones hasta que el internet está conectado?

Con systemd/systemctl, usted puede esperar hasta que "de la red.objetivo" que se realiza antes de ejecutar el proceso en segundo plano. Me pregunto si launchctl puede hacer eso.

7voto

Michael Puntos 193

De acuerdo a los Demonios y Servicios Guía de Programación esto no es directamente posible a través de launchd.

La Disponibilidad De La Red

Si el demonio depende de la red está disponible, esto no puede ser manejado con las dependencias debido a que las interfaces de red pueden entrar y salir en cualquier momento en OS X. Para resolver este problema, debe utilizar la accesibilidad de la red de la funcionalidad o la dinámica de la funcionalidad del almacén en el Sistema de Configuración del framework. Esto está documentado en el Sistema de Configuración de las Directrices de Programación y Configuración del Sistema Marco de Referencia. Para obtener más información acerca de la accesibilidad de la red, consulte la Determinación de la Accesibilidad y conexión en el Sistema de Configuración de las Directrices de Programación.

Las aplicaciones deben trabajar de verdad cuando la red no está disponible, en lugar de sólo fallando, pero si desea hacerlo usted mismo podría eliminar sus elementos de inicio y hacer su propio Lanzamiento Agente de llamar a un script que se espera de una conexión como este:

  • crear una secuencia de comandos como ~/.local/bin/launch_my_programs
#!/bin/bash
while ! ping -c1 -W1 1.1.1.1 &> /dev/null ; do
    sleep 1
done
open /Applications/BBEdit.app # or whatever apps you want
  • crear una .plist como ~/Library/LaunchAgents/mi.inicio.plist y de incluir la ruta de acceso completa de la secuencia de comandos
<?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.startup</string>
    <key>Program</key>
    <string>/Users/hali/.local/bin/launch_my_programs</string>
    <key>RunAtLoad</key>
    <true/>
  </dict>
</plist>
  • chmod +x ~/.local/bin/launch_my_programs para hacer el script ejecutable.
  • launchctl load -w ~/Library/LaunchAgents/my.startup.plist de la carga de agente.

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