2009-11-05 13 views
5

Estoy tratando de familiarizarme con los trabajos de cron, y creo que tengo la idea básica (programación, sintaxis, etc.), pero parece que no puedo hacerlo bien en mi mac con Terminal - ¿dónde exactamente encuentro el Crontab? ¿Cómo debería hacer referencia a las rutas a los scripts?Comenzando con cronjobs en una Mac

Lo que estoy tratando de hacer es presionar un script php en una máquina remota (http://...) - ¿Es eso posible?

Respuesta

4

Para empezar con launchd (en lugar de cron) que querrá crear primero un archivo vacío .plist, por ejemplo local.mytask.plist y ponerlo en algún lugar. ~/Library/LaunchAgents es probablemente un buen lugar. Abra que en el editor de texto y copiar en el código de abajo

<?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>KeepAlive</key> 
<false/> 
<key>Label</key> 
<string>local.mytask</string> 
<key>ProgramArguments</key> 
<array> 
<string>/opt/local/bin/wget</string> 
<string>http://someserver/somepage.php</string> 
</array> 
<key>StartInterval</key> 
<integer>300</integer> 
<key>RunAtLoad</key> 
<true /> 
<key>StandardErrorPath</key> 
<string>/dev/null</string> 
<key>StandardOutPath</key> 
<string>/dev/null</string> 
</dict> 
</plist> 

Entonces "activar" el archivo desde la línea de comandos:

sudo launchctl load /Users/my_username/Library/LaunchAgents/local.mytask.plist 

Para que se cargue automáticamente, crear un archivo ~/.launchd.conf con la misma línea (menos sudo launch)

load /Users/my_username/Library/LaunchAgents/local.mytask.plist 

Las instrucciones anteriores arriba han sido copiadas de www.davidlanier.com y reposteado aquí para tu referencia.

+0

Gracias muchachos, todas sus respuestas fueron muy útil. Terminé usando Launchd manualmente (Lingon fue en realidad helfull con el sintaxis también). Tenga en cuenta que no se puede utilizar wget en un mac fuera de la caja, así que utiliza rizo en su lugar: \t /usr/bin/rizo \t -s \t http: //myserver.com/myscript.php Adam

+0

Me di cuenta cuando el archivo se encuentra realmente en /Users/my_username/Library/LaunchAgents/local.mytask.plist, se carga automáticamente al iniciar sesión, incluso sin el ~/.launchd.conf – commonpike

1

Cron ha sido reemplazado por launchd desde 10.4. Probablemente deberías escribir tus tareas usando esto a menos que planees portarlas a sistemas Linux/Unix en algún momento.

Si decide ir con cron de todos modos, intente escribir crontab -e o sudo crontab -e. Estos le darán diferentes archivos crontab, el primero para el usuario en el que se está ejecutando actualmente y el segundo para el usuario raíz.

"Golpear" una URL se puede lograr de muchas maneras. Dependiendo de la secuencia de comandos local que esté utilizando para "presionar", podría usar algunos de los métodos/clases incorporados en el lenguaje. Por ejemplo, una secuencia de comandos de Ruby usaría net/http, pero también podría probar curl si solo está escribiendo una secuencia de comandos bash. Haga man curl para obtener más información, pero el comando básico es solo curl http://google.com.

+1

cron no se ejecuta de forma predeterminada en 10.4 y superior, que tendrá que habilitarlo. De la memoria la página de manual crond muestra cómo hacerlo esto. – saschabeaumont

+0

+1 Es bueno saberlo. La idea de que se deshabilitaría ni siquiera se me pasó por la cabeza. –

+1

La última vez que leí, cronjobs en OS X se implementan * a través de * launchd, por lo que la diferencia podría ser discutible ... –

8

Tipo crontab -e para editar su tabla de comandos y crontab -l para listar el contenido actual .. Tipo man 1 crontab para obtener más información sobre ese comando y man 5 crontab para obtener más información sobre el formato de archivo de la tabla de cron.

Por ejemplo, para descargar la página de stackoverflow todos los días a las 10: 00a, ejecute crontab -e, ingrese esta línea y luego guárdela/salga. La salida se escribirá en un archivo en su directorio personal.

0 10 * * * /usr/bin/curl -s http://stackoverflow.com > ~/stackoverflow.html 
2

launchd es potente, pero realmente no desea escribir el plist usted mismo. Obtenga Lingon. Es una GUI de código abierto y muy bien diseñada para crear y administrar las tareas de inicio de su sistema.

+0

Y aunque Lingon sigue siendo muy útil y útil, tenga en cuenta que el desarrollador ha anunciado que se ha rendido en un mayor desarrollo de la misma. –

0

Ya no desea utilizar cron. Como otros ya han indicado, ha sido reemplazado por launchd y launchd claramente será el futuro en Mac OS X.

MacTech Magazine ha estado recientemente haciendo una serie de artículos sobre launchd y recomiendo leerlos. Sé que ciertamente he aprendido mucho.

de septiembre de 2009 (Volumen 25, Número 9) 25.09 MacEnterprise: launchd para el almuerzo

octubre de 2009, (Volumen 25, Número 10) Snow Leopard, Launchd, y almuerzo Más recetas launchd, y una ver los cambios en Snow Leopard

Ha habido otros artículos en MacTech y sugeriría buscar en su sitio.

3

En caso de que alguien más peleando con cron en Snow Leopard tropiece con esto, voy a dragar este viejo hilo.

Sí, launchd se supone que reemplaza cron, pero de hecho no puede hacer ciertas cosas cron puede.

Cron no está bien integrado. Si envía un mensaje, termina en/var/mail/user_name, por supuesto, Apple Mail no sabe nada.

crontab -e surge diciendo que 'el archivo temp debe editarse en su lugar'. Aparentemente vim no es compatible con vi. A continuación, puede hacer crontab "< /tmp/crontab.whatever" (busque en/tmp y vea qué nombre se usa realmente) y terminará en el lugar correcto y, suponiendo que no haya cometido un error, funcionará.

Sí, se tomó un tiempo para ordenar todo esto a cabo :(