Saltar al contenido

Conversor de Cron a systemd · Programación

Lleva una línea de crontab a un temporizador de systemd.

Pega una sola entrada de crontab para generar un par systemd .timer y .service con una expresión OnCalendar= y notas de migración — gratis, en línea, sin registro.

Se ejecuta en tu navegador Sin registro Gratis y abierto Actualizado el 28 jul 2026

Área de pruebas del Conversor de Cron a systemd

Base name for the generated .timer and .service units. Optional.
crontab

Tip: press Esc to release focus.

OnCalendar
timer.timer
service.service
Notes

Paste a crontab line, then convert to see the equivalent systemd .timer and .service units, plus any migration notes here.

La brecha

systemd es el nuevo crontab.

Las distribuciones Linux modernas programan trabajos con temporizadores de systemd, y muchas ya ni siquiera incluyen un demonio de cron por usuario. Los temporizadores te dan registro en journald, ordenamiento de dependencias, límites de recursos, reintentos y Persistent=true para las ejecuciones perdidas — cosas que una simple línea de crontab no puede expresar.

Pero la sintaxis no resulta familiar, y reescribir a mano una programación en OnCalendar= a través de dos archivos de unidad es engorroso y fácil de equivocar sutilmente. Este conversor hace la parte mecánica por ti —pega una línea de crontab para migrarla a unidades de temporizador de systemd en segundos— y señala el puñado de comportamientos —entorno, MAILTO, directorio de trabajo— que no se traducen uno a uno, de modo que la migración sea honesta y no silenciosa.

¿Necesitas leer primero el lado de cron? Prueba el Probador de expresiones Cron, luego conviértela aquí — o ve directamente al área de pruebas en vivo de arriba.

El proceso

Cómo funciona.

Cinco pasos deterministas convierten una línea de crontab en un par de unidades instalables — todo dentro de la pestaña de tu navegador, siempre.

  1. Analiza la línea.

    Tu entrada de crontab se divide en los cinco campos de tiempo (o un @macro) y el comando que les sigue.

  2. Construye OnCalendar.

    Los campos de tiempo se reescriben en una expresión de calendario OnCalendar= de systemd, listas y pasos incluidos.

  3. Emite las unidades.

    Se genera un .timer que lleva la programación y un .service que envuelve tu comando, como un par emparejado.

  4. Señala las brechas.

    Cualquier cosa que cron haga y que systemd maneje de forma distinta —entorno, MAILTO, directorio de trabajo— aparece como una nota.

  5. Copia e instala.

    Coloca las dos unidades en su sitio, luego habilita e inicia el temporizador. Las próximas ejecuciones se ven en list-timers.

La asignación

Una línea de entrada, dos unidades de salida.

El conversor lee una entrada estándar de crontab —cinco campos de tiempo más un comando, o un @macro— y emite un systemd .timer emparejado con un .service.

La línea de crontab

Los cinco campos son minute, hour, day-of-month, month y day-of-week, seguidos del comando. Se entienden listas (1,15), rangos (1-5), pasos (*/10) y @macros.

crontab
# Run the nightly backup every day at 03:00
0 3 * * *  /usr/local/bin/backup.sh

La unidad .timer

Lleva la programación como una expresión OnCalendar=. Persistent=true significa que una ejecución perdida mientras la máquina estaba apagada se dispara en el siguiente arranque — más cerca de cómo los operadores esperan que se comporte un trabajo de backup.

backup.timer
[Unit]
Description=Run backup.sh (migrated from crontab)

[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true

[Install]
WantedBy=timers.target

La unidad .service

Envuelve tu comando. Type=oneshot encaja con un trabajo de ejecución hasta su finalización, y ExecStart= contiene el comando de la línea de crontab. Añade Environment= o User= aquí según necesites.

backup.service
[Unit]
Description=backup.sh (migrated from crontab)

[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh

Instalar las unidades

Tres comandos para ponerlo en marcha.

Copia ambas unidades, colócalas en /etc/systemd/system/, recarga el demonio, luego habilita e inicia el .timer — nunca el servicio directamente. El temporizador es lo que programa la ejecución.

Una vez habilitado, systemctl list-timers muestra la próxima hora de disparo, y journalctl -u backup.service sigue la salida que el viejo MAILTO te habría enviado por correo.

install.sh
# Drop the units in place, then enable the timer
$ sudo cp backup.timer backup.service /etc/systemd/system/
$ sudo systemctl daemon-reload
$ sudo systemctl enable --now backup.timer

# Confirm the next scheduled run
$ systemctl list-timers backup.timer

Antes de hacer el cambio

Una nota sobre la paridad: las unidades generadas cubren el caso común — programación, comando y manejo de ejecuciones perdidas. Unos pocos comportamientos de cron no tienen un análogo directo en OnCalendar= y aparecen como notas de migración en su lugar: las asignaciones de entorno por línea (muévelas a Environment= / EnvironmentFile=), el correo de salida MAILTO (usa journald o un manejador OnFailure=) y el directorio de trabajo implícito (establece WorkingDirectory=). Revisa las notas, luego ejecuta el temporizador una vez con systemctl start para confirmar antes de eliminar la línea de crontab original.

FAQ

Tus preguntas, respondidas.

Toca una pregunta para desplegar la respuesta.

Toma una sola línea de crontab —los cinco campos de tiempo más el comando— y genera una configuración equivalente en systemd: una unidad .timer con una expresión OnCalendar= que coincide con tu programación, y una unidad .service que ejecuta tu comando. También enumera notas de migración que señalan cualquier cosa que systemd maneje de forma distinta, como el directorio de trabajo implícito o el entorno. Todo se calcula en tu navegador.

No. El conversor se ejecuta 100 % del lado del cliente. Tu línea de cron y tu comando se analizan y se traducen en la pestaña de tu navegador: nada se sube a un servidor y no hay cuenta ni registro. Es seguro pegar comandos y rutas internas.

Un conjunto de campos de crontab se reescribe en la sintaxis de calendario OnCalendar= de systemd; por ejemplo, «0 3 * * *» se convierte en «*-*-* 03:00:00» (a diario a las 03:00). Las listas, los rangos y los valores de paso se asignan a sus equivalentes en OnCalendar, y los @macros habituales como @daily y @hourly se asignan a sus formas canónicas de temporizador. Tras instalar el temporizador, puedes confirmar las próximas ejecuciones con «systemctl list-timers».

Los temporizadores te dan registro estructurado a través del journal (journalctl -u your.service), ordenamiento de dependencias, límites de recursos, reintento automático y programación precisa frente a monotónica, además de Persistent=true para que una ejecución perdida pueda dispararse en el siguiente arranque. Son la primitiva de programación nativa en las distribuciones Linux modernas con systemd, donde a menudo ni siquiera está instalado el crond por usuario.

Unos pocos comportamientos de cron no tienen un análogo directo en OnCalendar= y en su lugar aparecen como notas de migración: extensiones de cron no estándar o propias del proveedor, el correo de salida MAILTO (usa journald o un manejador OnFailure=) y las asignaciones de entorno por línea (muévelas a Environment= o a un EnvironmentFile= en el .service). El conversor las señala para que nada cambie de significado en silencio.

No. Esta es una utilidad independiente y comunitaria, y no está afiliada ni respaldada por el proyecto systemd ni por ninguna implementación de cron. Modela los formatos estándar de crontab y de unidades de systemd por familiaridad y los nombra solo para describir lo que convierte.

@reboot no tiene equivalente en OnCalendar= y se asigna a OnBootSec=1min en la sección [Timer], de modo que el trabajo se dispara una vez poco después de cada arranque. @hourly se expande a OnCalendar=*-*-* *:00:00, @daily a OnCalendar=*-*-* 00:00:00, @weekly a OnCalendar=Sun *-*-* 00:00:00, @monthly a OnCalendar=*-*-01 00:00:00, y @yearly a OnCalendar=*-01-01 00:00:00. El conversor maneja todos estos automáticamente y anota el caso especial de @reboot.

Añade Persistent=true a la sección [Timer] junto a tu línea OnCalendar=. systemd registra en disco la hora del último disparo y, si la hora programada pasó mientras la máquina estaba apagada, ejecuta el trabajo de inmediato en el siguiente arranque. El conversor siempre incluye Persistent=true en la unidad .timer generada, así que este comportamiento está activado por defecto.

Para trabajos de todo el sistema, coloca ambas unidades en /etc/systemd/system/, luego ejecuta sudo systemctl daemon-reload y sudo systemctl enable --now yourjob.timer. Habilita la unidad .timer —no el .service directamente—, ya que el temporizador es lo que controla la programación. Para trabajos por usuario, colócalas en ~/.config/systemd/user/ y usa systemctl --user enable --now yourjob.timer en su lugar.

Ejecuta systemd-analyze calendar «<expression>» para validar la sintaxis y ver cuándo transcurrirá la expresión por próxima vez; por ejemplo, systemd-analyze calendar «*-*-* 03:00:00». Una vez instalado el temporizador, systemctl list-timers muestra cada temporizador activo con sus horas de última y próxima ejecución, y journalctl -u yourjob.service transmite la salida del trabajo.

More free, private DevOps tools.

El Conversor de Cron a systemd es una herramienta dentro de OpsCanopy — una creciente cubierta de validadores, conversores y probadores basados en el navegador que nunca tocan un servidor.

29 herramientas gratuitas, todas pueden funcionar sin conexión — opscanopy.com funciona sin registro y sin subir nada.

¿Trabajas con programaciones? Combínalo con el Probador de expresiones Cron para leer una línea de cron en lenguaje sencillo primero, o explora el directorio de herramientas completo.

No está afiliado ni respaldado por el proyecto systemd ni por ninguna implementación de cron. Los nombres de formato se usan solo para describir lo que esta herramienta convierte.