¿Cómo hace que un script o aplicación se ejecute o deje de ejecutarse automáticamente cuando se inicia el sistema, un usuario inicia sesión, en un momento específico, cuando se conecta un disco, etc.?
¿Cómo hace que un script o aplicación se ejecute o deje de ejecutarse automáticamente cuando se inicia el sistema, un usuario inicia sesión, en un momento específico, cuando se conecta un disco, etc.?
Respuestas:
Si desea que se ejecute algo cuando un usuario inicia sesión, la forma más fácil es usar la GUI. Usted puede
System Prefs > Accounts > Login Items
pantalla y agregue el elemento allí al
+
símbolo.app
en el panelOptions
y luego seleccioneOpen at Login
Si desea lanzar algo que no es un .app
, o desea tener más control sobre el lanzamiento, como:
entonces quieres usar la solución técnica que es launchd
.
La forma más fácil de configurar un launchd
archivo de configuración es usar una herramienta para ayudar. Al momento de escribir, el método más popular es Lingon (que tiene una versión gratuita más antigua disponible de SourceForge), o la herramienta PList Website .
Si no desea usar Lingon o el sitio web PList y solo quiere usar las herramientas en bruto disponibles en el sistema, puede escribir las suyas launchd
plist
a mano
Aquí está mi script launchd para ejecutar SomeApp continuamente después de que el sistema se inicie (independientemente de que un usuario inicie sesión). Está en / System / Library / LaunchAgents / y se llama SomeApp.restart.plist. Si se ejecuta en base a un inicio de sesión de usuario, podría almacenarse en ~ / Library / LaunchAgents /
<?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>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>SomeApp.restart</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/SomeApp.app/Contents/MacOS/SomeApp</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>5</integer>
<key>Minute</key>
<integer>10</integer>
</dict>
</dict>
</plist>
Cárgalo una vez con
launchctl load ~/Library/LaunchAgents/SomeApp.restart.plist
RunAtLoad
opción iniciará la aplicación la primera vez que launchctl ejecute esto.KeepAlive
opción volverá a iniciar la aplicación si se bloquea.StartCalendarInterval
ejecutará en un momento determinado. Presumiblemente, esto es mutuamente exclusivo con los dos anteriores, pero se incluye para mostrar lo que se puede hacer conlaunchd
Hay muchas opciones adicionales que se pueden encontrar mediante la experimentación con Lingon o mediante la lectura de las páginas del manual para launchctl
, launchd.plist
, plist
, launchd.conf
, etc.
launchctl load -w ...
para hacer que el cambio sea persistente. Sobre la base de sus comentarios He actualizado mi OSX guión poweruser configurador
Lingon todavía funciona. La utilicé la semana pasada para crear una "tarea programada". Después de descargarlo, tuve que usar su actualizador automático para obtener la última versión, pero funciona bien.
Si solo es necesario ejecutar cuando se inicia el sistema, simplemente use la pestaña Elementos de inicio de sesión del panel de preferencias Cuentas en Preferencias del sistema.
Si es un script, use el Editor AppleScript para guardarlo como una aplicación. Si no es un script AppleScript, aún puede usar AppleScript para ejecutar el script de esta manera:
do shell script "your script here"
No olvides Loginhooks.
Aunque se ejecutan como root, debería poder ejecutar un script $ HOME / .loginhook usando algo como esto:
#!/bin/sh
home=`eval echo ~$user`
if [ -x "$home/.loginhook" ]; then
logger -t $0 "executing .loginhook of user $user"
su - $user -c "$home/.loginhook"
fi
Luego solo agregue los comandos que desee al ~ / .loginhook
Además, aunque 'launchd' es "la manera Mac", crontab sigue siendo una opción perfectamente viable y es mucho más fácil de editar a mano que los archivos XML launchd.
Personalmente, felizmente pagué $ 5 por Lingon .
/path/to/script
y sudo defaults write com.apple.loginwindow LoginHook /path/to/script
? ¿Y el punto de ejecutar un script en el directorio de inicio es que cada usuario puede tener un personalizado (o no) ~/.loginhook
?
¡Ejecutar una aplicación a una hora específica se puede hacer fácilmente en iCal, como acabo de descubrir gracias a otro foro!
Una cosa a tener en cuenta es que si tiene varias Macs que comparten cosas a través de iCloud, este evento también se ejecutará en esas aplicaciones, que puede querer o no. Para que esto solo suceda en una sola Mac, debe crear el evento en un calendario 'En mi Mac' que puede hacer de la siguiente manera ...
Acabo de descubrir esto por mí mismo, y ambos consejos me sorprendieron gratamente, así que pensé en compartirlos aquí.
Recibí la información de estas personas útiles aquí ... ¡así que gracias a ustedes! ...
http://osxdaily.com/2013/04/15/launch-file-app-scheduled-date-mac-os-x/