Tengo un trabajo bastante simple que me gustaría ejecutar cada hora. Podría hacerlo usando cron
, pero pensé en usar esto para aprender launchd
, ya que escucho cosas buenas al respecto. Tengo la man launchd.plist
página como referencia, pero estoy buscando algo basado más en la construcción de un trabajo de ejemplo.
19
cron
pregunta, ¿no sería superuser.com el lugar correcto? Comolaunchd
es la versión de Apple decron
(y tambiéndaemontools
, y posiblemente otras cosas), pensé que esta era mi mejor opción.Respuestas:
launchd
ejecuta Daemons (/Library/LaunchDaemons
o/System/Library/LaunchDaemons
) como root, y los ejecutará independientemente de si los usuarios han iniciado sesión o no. Los Agentes de lanzamiento (/Library/LaunchAgents/
o~/Library/LaunchAgents/
) se ejecutan cuando un usuario inicia sesión como ese usuario. No puede usar setuid para cambiar el usuario que ejecuta el script en demonios. El/System
directorio está reservado para las tareas de Mac OS X, por lo que recomiendo colocar suslaunchd
listas en/Library
la~/Library
carpeta o en la carpeta, según tenga sentido.Entonces, el primer paso es determinar si estás haciendo un agente o un demonio.
El segundo paso es hacer su
.plist
archivo. Puede usar programas basados en GUI como Lingon para ayudar con esto o simplemente usar su editor de texto favorito:Una muestra
.plist
para ejecutar un script cada hora (StartInterval
oStartIntervalCalendar
son las claves que queremos,StartInterval
para que un elemento suceda cadax
segundo,StartIntervalCalendar
para una hora y / o fecha específica. Consulte 126907 en SuperUser para ver un ejemplo que hice con StartCalendarInterval):Modifique
.plist
según sea necesario para apuntar a su secuencia de comandos y cualquier argumento según sea necesario (los argumentos están en líneas separadas) y guarde el archivo con el mismo nombre que el valor de la etiqueta pero.plist
al final. (por ejemplo, selocal.my-mac.flickrstats
guardaría comolocal.my-mac.flickrstats.plist
). Si aún no lo ha hecho, mueva ese.plist
archivo a/Library/LaunchDaemons
cuando crea un Daemon (se ejecuta todo el tiempo) o a~/Library/LaunchAgents
(solo usted está conectado) o/Library/LaunchAgents
(cualquier usuario está conectado).Para comenzar el trabajo que desea ejecutar
launchctl
según sea necesario para cargar el archivo. Para los elementos en/Library
, debe usar sudo: por ejemplo,sudo launchctl load -w /PATH/TO/PLIST
Como referencia, también consulte las siguientes preguntas sobre Superusuario : comando iniciado como root , carga un demonio en todo el sistema y cómo puedo hacer que se ejecute un script todos los días
fuente
Sé que no es un buen tutorial, pero puedes echar un vistazo a la Guía de programación de servicios y demonios de Apple, que tiene una sección sobre la programación de trabajos programados.
Sé que no es un tutorial completo, pero con él puedes entender los conceptos básicos de
launchd
.También proporciona un ejemplo de una
crond
tarea:fuente
Esto me ha ayudado mucho: http://launchd.info
Cubre la configuración, administración y solución de problemas utilizando Terminal o LaunchControl GUI de launchd . También se proporcionan ejemplos.
fuente
Sé que estabas buscando un tutorial, pero por casualidad alguien viene aquí como parte de la búsqueda de una herramienta para ayudarlos a hacer / editar entradas lanzadas, he usado esto antes: Lingon (sourceforge)
Ya no se está desarrollando activamente, pero lo que hay funciona (y obviamente incluye la fuente, etc.). Lo he usado en Snow Leopard para programar copias de seguridad en la nube de Amazon, etc.
fuente