Crear un Cron Job personalizado

 
 

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

  1. Inicia sesión en tu servidor a través de SSH utilizando el usuario Shell bajo el cual deseas crear el cron job.
  2. 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
    
  3. 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
    
  4. Elige un editor para ver este archivo. La opción #6 utiliza el programa nano, que es la opción más fácil.
  5. 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
    Esto ejecuta un archivo llamado mail.php a las 8:13 pm bajo el nombre de usuario username. Este debería ser el mismo nombre de usuario SSH con el que estás conectado.

    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
  6. 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.

Ver también

¿Este artículo ha respondido sus preguntas?

Última actualización el PST.

¿Aún no encuentra lo que busca?