Generalidades
Este artículo explica cómo crear manualmente un cron job personalizado a través de SSH en tu servidor de DreamHost.
Requisitos previos
Este artículo asume que ya has creado un usuario de Shell y puedes iniciar sesión en tu servidor a través de SSH.
Terminología
Cron job: Un cron job es un comando que ejecuta un script específico en un momento determinado. Estos se pueden crear en el panel o manualmente en el servidor.
Archivo Crontab: Un archivo crontab almacena todos los cron jobs para un solo usuario en el servidor.
Cómo interactúan los cron jobs personalizados y los del panel
Las siguientes dos opciones están disponibles para personalizar los cron jobs de tu usuario o el archivo crontab:
Cualquier cambio o actualización a los cron jobs de un usuario en el panel sobrescribirá las personalizaciones añadidas al archivo crontab.
Si eliges personalizar tu archivo crontab, ya no deberás utilizar el servicio de cron del panel para el usuario específico.
Editar un cron job creado en el panel
-
Estas instrucciones pueden usarse para editar un cron job existente que hayas creado en el panel. Sin embargo, esto NO se recomienda, ya que cualquier actualización a los cron jobs del usuario en el panel sobrescribirá tu archivo crontab personalizado.
Si creaste un cron job en el panel, solo debes continuar editándolo desde el panel.
Cambiar el archivo crontab del servidor por el tuyo
-
Puedes usar un archivo crontab personalizado creado bajo tu usuario para reemplazar el archivo crontab predeterminado en el servidor. Si haces esto, el crontab del servidor se sobrescribirá con tu archivo personalizado y cualquier cron job creado en el panel para este usuario dejará de funcionar.
Esto NO se recomienda, ya que cualquier actualización a los cron jobs del usuario en el panel sobrescribirá tu archivo crontab personalizado.
Corre el siguiente comando para usar tu archivo crontab personalizado llamado mycrontab:
[server]$ crontab /home/username/mycrontab
Editarlo en un Servidor Dedicado
Si estás conectado como un usuario administrador en un Servidor Dedicado, puedes editar el archivo crontab directamente usando sudo -i. El archivo crontab se encuentra en el siguiente directorio:
/var/spool/cron/crontabs/username
Sitios web DreamPress
-
Las instrucciones en este artículo no se aplican a los sitios web DreamPress. Si necesitas crear un cron job para un sitio web de DreamPress, debe ser creado en el panel. Revisa este artículo para más instrucciones.
Contenidos de un archivo crontab
A continuación se describen las diferentes secciones de un archivo crontab.
Ver el archivo crontab
Cada usuario en DreamHost tiene su propio archivo crontab. Para ver este archivo, inicia sesión en tu servidor a través de SSH y corre el siguiente comando:
[server]$ crontab -l
Los contenidos aparecerán similares al siguiente si has creado previamente un cron job en el panel:
###--- BEGIN DREAMHOST BLOCK
###--- Changes made to this part of the file WILL be destroyed!
# Title
MAILTO="admin@example.com"
30 8 1 * 3 /usr/bin/setlock -n /tmp/cronlock.3790180184.244762 sh -c 'sh /home/username/file.sh'
###--- You can make changes below the next line and they will be preserved!
###--- END DREAMHOST BLOCK
Title
Esto es lo que nombraste al cron job en el panel.
MAILTO
Este es el correo al que se envía cualquier salida. Solo recibirá un correo con la salida del cron job si el script que ejecuta escribe datos en la terminal.
Si el script que ejecuta el cron job no crea ninguna salida en la línea de comando, no hay salida para enviar por correo.
/tmp/cronlock
Esto aparece si has marcado Usar bloqueo al crear un cron job en el panel.
Campos de Fecha/Hora
Los primeros cinco valores son los campos de fecha y hora, que especifican cuándo ejecutar un comando. Todos los cron jobs se ejecutan basados en la hora de los servidores web de DreamHost, que está ajustada a PST.
Campos
-
No. de campo Descripción Valores permitidos 1 minuto 0-59 2 hora 0-23 3 día del mes 1-31 4 mes 1-12 5 día de la semana 0-7 (0 y 7 son considerados Domingo)
Vista gráfica de estos campos
-
* * * * * comando a ejecutarse │ │ │ │ │ │ │ │ │ │ │ │ │ │ └───── día de la semana (0 - 6 son Domingo a Sábado) │ │ │ └────────── mes (1 - 12) │ │ └─────────────── día del mes (1 - 31) │ └──────────────────── hora (0 - 23) └───────────────────────── min (0 - 59)
Especificar múltiples valores
-
Valor
Descripción Ejemplo Coma , especifica una lista de valores 1,3,4,7,8
Guión - especifica el rango de valores
1-6 es equivalente a "1,2,3,4,5,6" Asterisco * especifica todos los posibles valores de un campo Un asterisco en el campo de la hora (segundo) sería equivalente a 'cada hora'. Slash / se puede usar en combinación con un asterisco para omitir un número determinado de valores /3 significa saltar cada tercer valor.
Entonces, */3 en el campo de hora es equivalente a "0,3,6,9,12,15,18,21"
Cadenas especiales en lugar de los campos de tiempo/fecha
-
Valor Descripción Equivalente a Ejemplo @yearly o @annually Ejecutar una vez al año a medianoche del 1 de enero 0 0 1 1 * @yearly php /home/username/mail.php @monthly Ejecutar una vez al mes, a medianoche, el primer día del mes 0 0 1 * * @monthly php /home/username/mail.php @weekly Ejecutar una vez a la semana, a medianoche, los domingos 0 0 * * 0 @weekly php /home/username/mail.php @daily or @midnight Ejecutar una vez al día, a medianoche 0 0 * * * @daily php /home/username/mail.php @hourly Ejecutar una vez por hora, al comienzo de cada hora 0 * * * * @hourly php /home/username/mail.php @reboot Ejecutar al iniciar (el daemon cron) @reboot @reboot php /home/username/mail.php Revisa el siguiente artículo de Wikipedia para más información:
Crear un cron job personalizado
Los siguientes pasos explican cómo agregar un cron job personalizado bajo tu usuario Shell.
Estas instrucciones asumen que aún no has agregado un cron job en el panel, por lo que el archivo crontab está en blanco. Si ves contenido al editar este archivo, detente y revisa la sección anterior, ya que cualquier actualización en el panel sobrescribirá tus personalizaciones.
La siguiente sección también está disponible como un video instructivo:
Crear un cron job
- Inicia sesión en tu servidor a través de SSH utilizando el usuario Shell bajo el cual deseas crear el cron job.
- Corre el siguiente comando para abrir tu archivo crontab.
[server]$ crontab -e It looks like you don't have a MAILTO line in your crontab file For performance reasons we ask that you specify an address where cronjob output will be delivered. If you do not wish to receive cronjob output, simply press enter and cronjob output will not be mailed to you. For more information regarding this, please visit: https://help.dreamhost.com/hc/en-us/articles/215088608 Where would you like cronjob output delivered? (leave blank to disable) : admin@example.com cronjob output will be emailed to admin@example.com confirm? (y/N): y
- Escribe la letra y y presiona Enter para continuar.
Select an editor. To change later, run 'select-editor'. 1. /usr/bin/joe 2. /usr/bin/jstar 3. /usr/bin/jpico 4. /usr/bin/jmacs 5. /usr/bin/jed 6. /bin/nano <---- easiest 7. /usr/bin/vim.basic 8. /usr/bin/rjoe 9. /usr/bin/mcedit 10. /usr/bin/vim.tiny 11. /bin/elvis-tiny 12. /usr/bin/emacs 13. /bin/ed Choose 1-13 [3]: 6
- Elige un editor para ver este archivo. La opción #6 utiliza el programa nano, que es la opción más fácil.
-
Agrega el código para tu cron job en el archivo crontab en blanco que se abre. Por ejemplo:
# Custom cron job MAILTO="user@example.com" 13 20 * * * php /home/username/mail.php
Hay dos partes en el comando.
- la ruta al programa para correr el script
- la ruta al script
Este ejemplo usa una ruta a una versión de PHP. También puedes usar la versión predeterminada utilizando php en lugar de la ruta completa.
-
/usr/local/php83/bin/php
Sigue esto con un espacio.
Luego, agrega la ruta al archivo:
-
/home/username/example.com/script.php
La versión completa se vería similar a esto:
-
/usr/local/php83/bin/php /home/username/example.com/script.php
- Guarda el archivo. Deberías ver la siguiente respuesta:
crontab: installing new crontab
El cron job ahora debería ejecutarse todos los días a las 8:13 p.m.
Cosas a tener en cuenta al editar/crear tu crontab
carácter de salto de línea
-
Cada línea tiene cinco campos de fecha/hora, seguidos de un comando, y luego un carácter de salto de línea ('\n').
Un problema común es no incluir un salto de línea, así que asegúrate de presionar Enter al final de tu comando varias veces.
Contenido ignorado
-
Las líneas en blanco, los espacios iniciales, y las tabulaciones se ignoran.