Cron? Lanzado? iCal ??
¿Si es así, cómo?
Cron? Lanzado? iCal ??
¿Si es así, cómo?
Respuestas:
Como referencia, las 3 opciones funcionarían. Sin embargo, la opción iCal tiene más limitaciones que las otras.
(Hay GUI para editar cron y launchd como se menciona en otras respuestas)
Cron es el más directo y conocido y hay muchos tutoriales disponibles. Las Notas de Coles son para agregar la última línea desde abajo a su crontab (ya sea editando /etc/crontab
o usando crontab
en la línea de comando):
MM HH DD MM WKD -- Minutes, Hour, Day, Month, Weekday (eg. Sun, Mon)
MM HH * * * USERNAME /PATH/TO/SCRIPT
00 3 * * * chealion /myscript.sh "Runs at 03:00 every day"
En Mac OS X, en cron
realidad ha sido reemplazado por, launchd
pero launchd
es compatible con versiones anteriores, cron
lo que significa que aún puede usar, cron
pero en realidad está launchd
haciendo todo el trabajo.
Si desea usar, launchd
también querrá consultar otras preguntas aquí en Super User: (por ejemplo, ¿cómo ejecuto un comando launchd como root? ) En cuanto a dónde desea guardar su archivo de configuración (el archivo plist) ya que cuando se ejecuta depende de en qué directorio está almacenado y cómo se carga (por ejemplo, si usó sudo o no), similar a cron.
A continuación, se muestra un ejemplo de la lista de ejecución diaria (asegúrese de que el archivo y la etiqueta sean iguales, menos la lista de la etiqueta): este script se ejecuta todos los días a los 3 minutos después de la medianoche:
<?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>local.IDENTIFIER_HERE.SOMETHING</string>
<key>KeepAlive</key>
<false/>
<key>RunAtLoad</key>
<false/>
<key>UserName</key>
<string>USERNAME HERE</string>
<key>Program</key>
<string>/PATH/TO/SCRIPT</string>
<key>ProgramArguments</key>
<array>
<string>Argument_1</string>
<string>Argument_2</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>00</integer>
<key>Minute</key>
<integer>03</integer>
</dict>
</dict>
</plist>
También vale la pena señalar que las tareas lanzadas si se programaron para cuando la computadora está dormida o apagada, se ejecutarán cuando la computadora esté disponible nuevamente (encenderla o despertarla), aunque solo una vez, sin importar cuántos días pueda tener estado. Editar: solo estaba en un documento de Apple que decía que si la máquina está apagada, perderá cualquier evento de inicio durante ese tiempo (su script no se iniciará al inicio), (el sueño sí inicia el script al despertar)
Otra opción es usar " at " (consulte la página del manual con "man at"). El script puede reprogramarse con, por ejemplo:
echo "sh $0 $@" | at `date +%H:%M` tomorrow
(use "+ 10 minutos" en lugar de "mañana" para ejecutarlo cada 10 minutos; para detener la programación, simplemente haga "at -l" para enumerar los identificadores de trabajo programados y luego "at -r id " para eliminar el trabajo)
Puede que tenga que iniciar el demonio correspondiente (atrun) primero con (consulte https://superuser.com/a/43680 ):
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist
Ventajas: solución rápida, no se necesita acceso a sudo / root, patrones de programación complicados fáciles de hacer Desventaja: no es un método de programación estándar para OS X (que se inicia)
launchd
es el camino a seguir en OS X.
crontab -e
, lo colocará en un editor de texto basado en la terminal en un archivo que se convertirá en su crontab personal cuando lo guarde.
LaunchControl es otra GUI para launchd / launchctl. Si bien las alternativas mencionadas por otros son perfectamente capaces de lanzar un script a diario, con LaunchControl puede configurar horarios complejos (como "una vez cada día de la semana, los fines de semana cada hora entre las 2 p.m. y las 8 p.m."). También es (AFAIK) la única herramienta que realmente valida el trabajo. Si un trabajo no funciona como se esperaba, le mostrará por qué.
Es gratis probar todo el tiempo que quieras.
cron
si lo busca en Google.Depende de lo que desee: las secuencias de comandos de iCal solo se ejecutarán si está conectado, cron
ejecuta la secuencia de comandos sin iniciar sesión. No sé si iCal ejecuta una secuencia de comandos si la Mac se apagó en el momento en que la secuencia de comandos debería tener sido ejecutado cron
está haciendo esto
Una actualización: puede consultar algunas aplicaciones en Mac OS X App Store que hacen esto:
Lingon también parece estar disponible también, dependiendo del sistema operativo que esté ejecutando.
Si quieres probar el GRATUITO, te sugeriría Tarea hasta el amanecer
Aquí hay una utilidad simple y gratuita para generar XML plist:
http://www.gieson.com/Library/projects/utilities/launcha/
Con esta utilidad no hay necesidad de instalar un programa, solo guarde los resultados en su carpeta Library / LaunchAgents.
RunAtStart
esté configurada como falsa (a menos que desee que sea verdadera). Pasé una hora descubriendo por qué mi Finder se congelaría y evitaría que el escritorio se cargara durante el arranque. La desactivación RunAtStart
no interfiere con el horario fijo.
Siempre uso Lingon para esto, pero parece que está fuera de desarrollo. Podrías probar Crontooie , pero nunca lo he usado personalmente. O simplemente edite el archivo crontab en la terminal.
sp@mactop ~ $ crontab -l
*/5 * * * * /usr/local/bin/cinco.sh
sp@mactop ~ $ cat /usr/local/bin/cinco.sh
#!/bin/sh
....cut....
sp@mactop ~ $
... las líneas de comando que agregue para "... cortar ..." se ejecutarán cada cinco minutos.
30 años de progreso, y 'cron' sigue siendo mi programador favorito.
-C
Si un evento de calendario satisface sus necesidades, la aplicación Automator integrada también le permite crear alarmas de calendario que se activan por eventos de calendario. Puede usar algunas de las acciones integradas basadas en la interfaz de usuario para hacer lo que desee, o también puede hacer que ejecute alguna aplicación o AppleScript, JavaScript o script de shell personalizado.