¿Alguien puede recomendar un buen tutorial para escribir (desde cero) un trabajo de lanzamiento estilo cron?

Tengo un trabajo bastante simple que me gustaría ejecutar cada hora. Podría hacerlo usando cron , pero pensé que usaría esto para aprender sobre launchd , ya que escuché cosas buenas al respecto. Tengo la página man launchd.plist como reference, pero estoy buscando algo más basado en build un trabajo de ejemplo.

  • Encontrar el verdadero estado de los trabajos de launchd
  • Sin opción AirDrop en iPhone 4s
  • Launchctl diferencia entre cargar y comenzar, download y detener
  • Filtro launchctl estándar err / out para agregar timestamp para registrar posts
  • Launchd no cargará lists en el arranque
  • ¿Dónde se encuentran los files de descarga aérea en ios?
  • ¿Cuál es el directory de trabajo pnetworkingeterminado de un script ejecutado a través de launchd?
  • ¿Hay alguna forma de cargar un LaunchAgent como otro usuario?
  • launchctl da error de permiso
  • Enigma de límite máximo de files
  • Encontrar el verdadero estado de los trabajos de launchd
  • Proceso de inicio oculto
  • 4 Solutions collect form web for “¿Alguien puede recomendar un buen tutorial para escribir (desde cero) un trabajo de lanzamiento estilo cron?”

    launchd ejecuta Daemons ( /Library/LaunchDaemons o /System/Library/LaunchDaemons ) como root, y los ejecutará independientemente de si los usuarios están conectados o no. Los Agentes de Lanzamiento ( /Library/LaunchAgents/ o ~/Library/LaunchAgents/ ) se ejecutan cuando un usuario inicia session como ese usuario. No puede usar setuid para cambiar el usuario que ejecuta el script en daemons. El directory /System está reservado para tareas de Mac OS X, por lo que recomiendo colocar las lists de inicio en la carpeta /Library o ~/Library ya que tiene sentido.

    Entonces, el primer paso es determinar si está creando un agente o un daemon.

    El segundo paso es hacer tu file .plist . Puede usar progtwigs basados ​​en GUI como Lingon para ayudar con esto o simplemente use su editor de text favorito:

    Un ejemplo de .plist para ejecutar un script cada hora ( StartInterval o StartIntervalCalendar son las keys que queremos – StartInterval para que un elemento suceda cada x segundos, StartIntervalCalendar para una hora y / o date específica. Consulte 126907 en SuperUser para ver un ejemplo que hice con StartCalendarInterval):

     <?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>OnDemand</key> <true/> <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>StartInterval</key> <integer>3600</integer> </dict> </plist> 

    Modifique el .plist según sea necesario para apuntar a su secuencia de commands y cualquier argumento según sea necesario (los arguments están en líneas separadas) y guarde el file con el mismo nombre que el valor de Etiqueta pero con .plist al final. (por ejemplo, local.my-mac.flickrstats se local.my-mac.flickrstats.plist como local.my-mac.flickrstats.plist ). Si aún no lo ha hecho, mueva ese file .plist a /Library/LaunchDaemons al hacer un Daemon (se ejecuta todo el time) o a ~/Library/LaunchAgents (solo está conectado) o /Library/LaunchAgents (cualquier usuario) ha iniciado session).

    Para iniciar el trabajo que desea ejecutar launchctl según sea necesario para cargar el file. Para elementos en /Library , debe usar sudo: por ejemplo, sudo launchctl load -w /PATH/TO/PLIST

    Como reference, también consulte las siguientes preguntas sobre Superusuario : command Ejecutar como raíz , Cargar un daemon de todo el sistema y ¿Cómo puedo get un script para ejecutar todos los días?

    Sé que no es un buen tutorial, pero podría echarle un vistazo a la Guía de progtwigción de demonios y services de Apple, que tiene una sección sobre progtwigción de trabajos progtwigdos.

    Sé que no es un tutorial completo, pero con él puedes comprender los conceptos básicos de launchd .

    También proporciona un ejemplo de una tarea crond :

     <?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>com.apple.periodic-daily</string> <key>ProgramArguments</key> <array> <string>/usr/sbin/periodic</string> <string>daily</string> </array> <key>LowPriorityIO</key> <true/> <key>Nice</key> <integer>1</integer> <key>StartCalendarInterval</key> <dict> <key>Hour</key> <integer>3</integer> <key>Minute</key> <integer>15</integer> </dict> </dict> </plist> 

    Esto me ha ayudado mucho: http://launchd.info

    Cubre la configuration, la administración y la solución de problemas usando Terminal o el launchd GUI LaunchControl . Se proporcionan ejemplos también.

    Sé que estabas buscando un tutorial, pero en caso de que alguien venga aquí como parte de search una herramienta que los ayude a crear / editar inputs de lanzamiento, lo he usado antes: Lingon (sourceforge)

    Ya no se está desarrollando activamente, pero lo que allí funciona funciona (y obviamente incluye fonts, etc.). Lo he usado en Snow Leopard para progtwigr copys de security en la nube de Amazon, etc.

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).