{"id":10671,"date":"2020-05-27T23:17:00","date_gmt":"2020-05-27T21:17:00","guid":{"rendered":"https:\/\/blog.hostinger.io\/es-tutoriales\/?p=10671"},"modified":"2026-01-07T14:48:15","modified_gmt":"2026-01-07T13:48:15","slug":"cron-job","status":"publish","type":"post","link":"\/es\/tutoriales\/cron-job","title":{"rendered":"Cron job: una gu\u00eda completa para principiantes"},"content":{"rendered":"<p>Una tarea cron o cron job es un programador basado en el tiempo en sistemas operativos tipo Unix, como Linux y macOS. Automatiza tareas repetitivas como las copias de seguridad, el mantenimiento del sistema y la ejecuci&oacute;n de scripts.<\/p><p>Los usuarios definen una programaci&oacute;n y un comando en un archivo crontab para mantener los procesos cr&iacute;ticos en ejecuci&oacute;n constante en segundo plano sin intervenci&oacute;n manual.<\/p><p>Para utilizar cron con eficacia, es necesario conocer sus componentes b&aacute;sicos:<\/p><ul class=\"wp-block-list\">\n<li><strong>Sintaxis y operadores:<\/strong> cron utiliza cinco campos de tiempo (minuto, hora, d&iacute;a del mes, mes y d&iacute;a de la semana) y caracteres especiales, como asteriscos y barras oblicuas, para definir intervalos.<\/li>\n\n\n\n<li><strong>Configuraci&oacute;n:<\/strong> los usuarios gestionan las programaciones con el comando <strong>crontab <\/strong>o colocando los scripts en directorios espec&iacute;ficos del sistema.<\/li>\n\n\n\n<li><strong>Permisos:<\/strong> los archivos <strong>cron.allow <\/strong>y <strong>cron.deny <\/strong>controlan el acceso y ayudan a mantener la seguridad del sistema.<\/li>\n\n\n\n<li><strong>Aplicaci&oacute;n pr&aacute;ctica:<\/strong> los casos de uso m&aacute;s comunes incluyen la automatizaci&oacute;n de copias de seguridad de bases de datos, la limpieza de cach&eacute;s del servidor y el env&iacute;o de informes peri&oacute;dicos por correo electr&oacute;nico.<\/li>\n<\/ul><h2 class=\"wp-block-heading\" id=\"h-que-es-un-cron-job\">&iquest;Qu&eacute; es un cron job?<\/h2><p>Un cron job <strong>es una utilidad que permite a los usuarios de Linux y Unix ejecutar comandos o scripts autom&aacute;ticamente a una hora y fecha determinadas<\/strong>. En lugar de ejecutar un comando manualmente todos los d&iacute;as o semanas, se programa una vez y el sistema lo ejecuta en segundo plano a la hora establecida.<\/p><p>Esta automatizaci&oacute;n es importante para la gesti&oacute;n de servidores. Por ejemplo, un administrador de sistemas que gestiona un servidor privado virtual (VPS) no puede realizar copias de seguridad de las bases de datos manualmente todas las noches a las 3:00 AM.<\/p><p>Un cron job se encarga de esta tarea de forma fiable, mejorando la eficiencia y reduciendo los errores humanos.<\/p><p>Entre los casos de uso comunes de las tareas cron se incluyen<\/p><ul class=\"wp-block-list\">\n<li><strong>Mantenimiento del sistema:<\/strong> eliminaci&oacute;n de archivos temporales, rotaci&oacute;n de archivos de registro o limpieza de datos en cach&eacute; para liberar espacio en disco.<\/li>\n\n\n\n<li><strong>Gesti&oacute;n de datos:<\/strong> volcado de bases de datos MySQL a una carpeta de copia de seguridad o sincronizaci&oacute;n de archivos entre servidores remotos.<\/li>\n\n\n\n<li><strong>Notificaciones:<\/strong> env&iacute;o autom&aacute;tico de res&uacute;menes por correo electr&oacute;nico, comprobaci&oacute;n de actualizaciones del sistema o supervisi&oacute;n del uso del disco y alerta a los administradores cuando queda poco espacio.<\/li>\n\n\n\n<li><strong>Aplicaciones web:<\/strong> activaci&oacute;n de scripts PHP para tareas como la distribuci&oacute;n de boletines o la renovaci&oacute;n de suscripciones.<\/li>\n<\/ul><h2 class=\"wp-block-heading\" id=\"h-como-funciona-un-cron-job\">&iquest;C&oacute;mo funciona un cron job?<\/h2><p>Un job cron <strong>se ejecuta a trav&eacute;s del demonio cron (crond)<\/strong>, un servicio en segundo plano que se ejecuta continuamente y ejecuta los comandos definidos en los archivos de<strong> cron table (crontab)<\/strong>.<\/p><p>Cada minuto, el daemon comprueba los archivos de configuraci&oacute;n y determina si hay alguna tarea programada para ejecutarse en ese momento.<\/p><p>Es importante distinguir entre los dos tipos de archivos de configuraci&oacute;n:<\/p><ul class=\"wp-block-list\">\n<li><strong>Crontab del sistema:<\/strong> ubicado en <strong>\/etc\/crontab<\/strong>, este archivo gestiona las tareas de todo el sistema y s&oacute;lo los usuarios root pueden editarlo. Incluye un campo adicional que especifica qu&eacute; usuario ejecuta el comando.<\/li>\n\n\n\n<li><strong>Crontab de usuario:<\/strong> cada usuario tiene su propio archivo crontab. La ubicaci&oacute;n var&iacute;a seg&uacute;n la distribuci&oacute;n, como <strong>\/var\/spool\/cron\/crontabs\/ <\/strong>en Debian y Ubuntu y <strong>\/var\/spool\/cron\/ <\/strong>en RHEL, CentOS y Fedora. Los usuarios editan estos archivos con el comando <strong>crontab -e<\/strong> y las tareas se ejecutan con los permisos de ese usuario.<\/li>\n<\/ul><h2 class=\"wp-block-heading\" id=\"h-comprender-la-sintaxis-y-los-operadores-de-crontab\">Comprender la sintaxis y los operadores de crontab<\/h2><p>La sintaxis de crontab define tareas programadas (cron jobs) utilizando una sola l&iacute;nea con cinco campos de hora y fecha seguidos del comando a ejecutar. Los operadores especiales a&ntilde;aden flexibilidad a la hora de definir intervalos de tiempo.<\/p><p>Este es el formato b&aacute;sico de una entrada crontab:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">minuto hora d&iacute;a_del_mes mes d&iacute;a_de_la_semana comando_a_ejecutar<\/pre><h3 class=\"wp-block-heading\">Los cinco campos de temporizaci&oacute;n (minuto, hora, fecha)<\/h3><p>Los cinco campos de temporizaci&oacute;n definen cu&aacute;ndo se ejecuta una tarea cron. El sistema lee la programaci&oacute;n en el siguiente orden:<\/p><figure tabindex=\"0\" class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Campo<\/strong><\/td><td><strong>Descripci&oacute;n<\/strong><\/td><td><strong>Valores permitidos<\/strong><\/td><\/tr><tr><td><strong>Minuto<\/strong><\/td><td>El minuto de la hora en que se ejecuta el comando.<\/td><td>0-59<\/td><\/tr><tr><td><strong>Hora<\/strong><\/td><td>La hora del d&iacute;a en formato de 24 horas.<\/td><td>0-23<\/td><\/tr><tr><td><strong>D&iacute;a del mes<\/strong><\/td><td>La fecha espec&iacute;fica del mes.<\/td><td>1-31<\/td><\/tr><tr><td><strong>Mes<\/strong><\/td><td>El mes del a&ntilde;o.<\/td><td>1-12 o JAN-DEC<\/td><\/tr><tr><td><strong>D&iacute;a de la semana<\/strong><\/td><td>El d&iacute;a de la semana.<\/td><td>0-6, donde domingo = 0 (o 7 en algunos sistemas)<\/td><\/tr><\/tbody><\/table><\/figure><p>\n\n\n\n<div><p class=\"important\"><strong>&iexcl;Importante!<\/strong> Ten cuidado al programar trabajos a trav&eacute;s de m&uacute;ltiples servidores en diferentes zonas horarias. Comprueba siempre la hora local de cada servidor con el comando <strong>date <\/strong>para confirmar que tu configuraci&oacute;n es correcta.<\/p><\/div>\n\n\n\n<\/p><h3 class=\"wp-block-heading\">Operadores Crontab<\/h3><p>Los operadores Crontab te permiten definir intervalos y patrones complejos dentro de los campos de tiempo. Cronie y su predecesor, Vixie cron, admiten ocho operadores.<\/p><p>Estas implementaciones sirven como herramientas cron por defecto en la mayor&iacute;a de las distribuciones de Linux, incluyendo Ubuntu, Debian, RHEL, CentOS y Fedora:<\/p><ul class=\"wp-block-list\">\n<li><strong>Asterisco (*)<\/strong>: representa todos los valores posibles. Por ejemplo, un asterisco en el campo minuto significa que la tarea se ejecuta cada minuto.<\/li>\n\n\n\n<li><strong>Coma (,)<\/strong>: especifica una lista de valores &uacute;nicos. Por ejemplo, <strong>1,5 <\/strong>en el campo d&iacute;a de la semana ejecuta la tarea los lunes y los viernes.<\/li>\n\n\n\n<li><strong>Gui&oacute;n (-)<\/strong>: define un rango de valores. Por ejemplo, <strong>6-9 <\/strong>en el campo mes ejecuta la tarea de junio a septiembre.<\/li>\n\n\n\n<li><strong>Barra oblicua (\/)<\/strong>: especifica valores escalonados o incrementos. Por ejemplo<strong>, *\/12 <\/strong>en el campo hora ejecuta el comando cada 12 horas.<\/li>\n<\/ul><p>Estos operadores no son compatibles con el cron est&aacute;ndar de Linux. S&oacute;lo funcionan en programadores basados en Java, como Quartz y Spring Boot, o en servicios en la nube como AWS EventBridge:<\/p><ul class=\"wp-block-list\">\n<li><strong>&Uacute;ltimo (L):<\/strong> especifica el &uacute;ltimo d&iacute;a del mes o el &uacute;ltimo d&iacute;a de la semana.<\/li>\n\n\n\n<li><strong>D&iacute;a de la semana (W):<\/strong> busca el d&iacute;a de la semana (de lunes a viernes) m&aacute;s pr&oacute;ximo a una fecha determinada.<\/li>\n\n\n\n<li><strong>Hash (#):<\/strong> especifica la en&eacute;sima aparici&oacute;n de un d&iacute;a de la semana, como el segundo lunes del mes.<\/li>\n\n\n\n<li><strong>Signo de interrogaci&oacute;n (?):<\/strong> indica que el d&iacute;a del mes o de la semana no importa.<\/li>\n<\/ul><p>\n\n\n\n<div class=\"protip\">\n                    <h4 class=\"title\">Consejo profesional<\/h4>\n                    <p>La mayor&iacute;a de las implementaciones de cron permiten combinar rangos con valores de paso. Por ejemplo, <strong>1-20\/2 <\/strong>ejecuta un trabajo cada dos minutos durante los primeros 20 minutos.<\/p>\n                <\/div>\n\n\n\n<\/p><h3 class=\"wp-block-heading\">Ejemplos de cron jobs<\/h3><p>Los siguientes ejemplos muestran c&oacute;mo aplicar la sintaxis de crontab a tareas del mundo real.<\/p><figure tabindex=\"0\" class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Sintaxis de cron<\/strong><\/td><td><strong>Prop&oacute;sito<\/strong><\/td><td><strong>Explicaci&oacute;n<\/strong><\/td><\/tr><tr><td><strong>0 0 * * 0 \/root\/backup.sh<\/strong><\/td><td>Copia de seguridad semanal<\/td><td>Ejecuta el script de copia de seguridad cada domingo a medianoche.<\/td><\/tr><tr><td><strong>0 * * * 1 \/root\/clearcache.sh<\/strong><\/td><td>Mantenimiento del servidor<\/td><td>Limpia la cach&eacute; cada hora, pero s&oacute;lo los lunes.<\/td><\/tr><tr><td><strong>0 6,18 * * * \/root\/db-dump.sh<\/strong><\/td><td>Instant&aacute;nea de la base de datos<\/td><td>Vuelca la base de datos dos veces al d&iacute;a, a las 6 de la ma&ntilde;ana y a las 6 de la tarde.<\/td><\/tr><tr><td><strong>*\/10 * * * * \/scripts\/monitor.sh<\/strong><\/td><td>Monitorizaci&oacute;n del tiempo de actividad<\/td><td>Ejecuta un script de monitorizaci&oacute;n cada 10 minutos.<\/td><\/tr><tr><td><strong>0 0 1,15 * * \/scripts\/payroll.php<\/strong><\/td><td>Tarea bimensual<\/td><td>Ejecuta un script de n&oacute;mina los d&iacute;as 1 y 15 de cada mes a medianoche.<\/td><\/tr><tr><td><strong>30 2 * * * \/usr\/bin\/apt update<\/strong><\/td><td>Actualizaci&oacute;n del sistema<\/td><td>Comprueba las actualizaciones de paquetes diariamente a las 2:30 AM, que suele ser una hora de poco tr&aacute;fico.<\/td><\/tr><tr><td><strong>* * * \/scripts\/s1.sh; \/scripts\/s2.sh<\/strong><\/td><td>Tareas m&uacute;ltiples<\/td><td>Ejecuta varios comandos en una sola tarea cron separ&aacute;ndolos con un punto y coma.<\/td><\/tr><tr><td><strong>0 8 1-7 * * [ &laquo;$(fecha &lsquo;+\\%u&rsquo;)&raquo; = &laquo;1&raquo; ] &amp;&amp; \/scripts\/report.sh<\/strong><\/td><td>Informe mensual<\/td><td>Genera un informe a las 8 AM los d&iacute;as 1-7 del mes, pero s&oacute;lo ejecuta el script cuando es lunes.<\/td><\/tr><\/tbody><\/table><\/figure><h2 class=\"wp-block-heading\" id=\"h-que-son-las-cadenas-especiales-de-los-cron-jobs\">&iquest;Qu&eacute; son las cadenas especiales de los cron jobs?<\/h2><p>Las cadenas especiales son <strong>atajos que comienzan con @ y reemplazan la sintaxis de cinco campos<\/strong>. Mejoran la legibilidad de las programaciones comunes y reducen el riesgo de errores de sintaxis.<\/p><ul class=\"wp-block-list\">\n<li><strong>@reboot:<\/strong> ejecuta el comando una vez cuando se inicia el demonio cron.<\/li>\n\n\n\n<li><strong>@hourly:<\/strong> se ejecuta una vez por hora (equivalente a <strong>0 * * * *<\/strong>).<\/li>\n\n\n\n<li><strong>@daily <\/strong>(o <strong>@midnight<\/strong>): se ejecuta una vez al d&iacute;a a medianoche (equivalente a <strong>0 0 * * *<\/strong>).<\/li>\n\n\n\n<li><strong>@weekly:<\/strong> se ejecuta una vez a la semana, el domingo a medianoche (equivalente a <strong>0 0 * * 0<\/strong>).<\/li>\n\n\n\n<li><strong>@monthly:<\/strong> se ejecuta una vez al mes, el d&iacute;a 1 a medianoche (equivalente a <strong>0 0 1 * *<\/strong>).<\/li>\n\n\n\n<li><strong>@yearly <\/strong>(o <strong>@annually<\/strong>): se ejecuta una vez al a&ntilde;o, el 1 de enero (equivalente a <strong>0 0 1 1 *<\/strong>).<\/li>\n<\/ul><p>Estos son algunos ejemplos de tareas cron que utilizan cadenas especiales:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@daily \/home\/user\/scripts\/daily-cleanup.sh\n@reboot \/usr\/local\/bin\/start-my-app.sh\n@hourly \/var\/www\/html\/monitor.php<\/pre><p>\n\n\n\n<div><p class=\"important\"><strong>&iexcl;Importante! <\/strong>La directiva @reboot se ejecuta cuando se inicia el daemon cron, no necesariamente cuando se inicia el sistema. Si detienes y reinicias el servicio cron sin reiniciar el sistema, las tareas @reboot vuelven a ejecutarse.<\/p><\/div>\n\n\n\n<\/p><h2 class=\"wp-block-heading\" id=\"h-permisos-de-cron\">Permisos de cron<\/h2><p>Los administradores del sistema controlan qui&eacute;n puede programar un cronjob mediante dos archivos en el directorio <strong>\/etc\/<\/strong>: <strong>cron.allow <\/strong>y <strong>cron.deny<\/strong>.<\/p><ul class=\"wp-block-list\">\n<li><strong>cron.allow:<\/strong> si existe este archivo, s&oacute;lo los usuarios que figuran en &eacute;l pueden crear, editar o ejecutar trabajos cron. El sistema bloquea a todos los dem&aacute;s usuarios.<\/li>\n\n\n\n<li><strong>cron.deny:<\/strong> si <strong>cron.allow <\/strong>no existe, el sistema comprueba este archivo en su lugar. Los usuarios enumerados aqu&iacute; no pueden utilizar cron, mientras que todos los dem&aacute;s usuarios s&iacute; pueden.<\/li>\n<\/ul><p>Si no existe ninguno de los dos archivos, el comportamiento predeterminado depende de la distribuci&oacute;n:<\/p><ul class=\"wp-block-list\">\n<li><strong>Debian y Ubuntu:<\/strong> todos los usuarios pueden utilizar cron por defecto.<\/li>\n\n\n\n<li><strong>RHEL, CentOS y Fedora:<\/strong> s&oacute;lo root puede utilizar cron por defecto.<\/li>\n<\/ul><p>Consulta siempre la documentaci&oacute;n de tu distribuci&oacute;n o prueba el acceso a cron con un usuario no root.<\/p><p>Por ejemplo, para permitir que s&oacute;lo un administrador de base de datos (<strong>dbadmin<\/strong>) programe tareas, crea un archivo <strong>cron.allow <\/strong>y a&ntilde;ade <strong>dbadmin <\/strong>al mismo. Esta configuraci&oacute;n impide que otros usuarios ejecuten tareas en segundo plano no autorizadas que consumen recursos del sistema.<\/p><h2 class=\"wp-block-heading\" id=\"h-como-configurar-un-cron-job\">C&oacute;mo configurar un cron job<\/h2><p>Para configurar una tarea cron, abre el terminal de tu m&aacute;quina, confirma que cron est&aacute; instalado, crea o edita un archivo crontab con <strong>crontab -e<\/strong> y observa las tareas programadas con <strong>crontab -l<\/strong>.<\/p><p>Algunos trabajos pueden requerir privilegios elevados o de root, o puede que necesites colocar scripts en directorios del sistema para tareas recurrentes.<\/p><h3 class=\"wp-block-heading\">1. Accede al terminal o SSH<\/h3><p>Para gestionar las tareas cron, accede a la l&iacute;nea de comandos de tu servidor. Si utilizas un servidor remoto o VPS, con&eacute;ctate a trav&eacute;s de SSH con un cliente como <a href=\"\/es\/tutoriales\/conectar-usando-terminal-putty-ssh\/\">PuTTY<\/a> en Windows o Terminal en macOS o Linux.<\/p><p>Alternativamente, los usuarios del <a href=\"\/es\/servidor-vps\">VPS de Hostinger<\/a> pueden utilizar la funci&oacute;n de terminal del navegador disponible en el panel de control VPS de hPanel.<\/p><figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1024\" height=\"559\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/vista-hpanel-scaled.png\/public\" alt=\"Vista del VPS en hPanel\" class=\"wp-image-50299\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/vista-hpanel-scaled.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/vista-hpanel-scaled.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/vista-hpanel-scaled.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/vista-hpanel-scaled.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/vista-hpanel-scaled.png\/w=1536,fit=scale-down 1536w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/vista-hpanel-scaled.png\/w=2048,fit=scale-down 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><figure class=\"wp-block-image size-large\"><a href=\"\/es\/servidor-vps\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-VPS-hosting_in-text-banner.png\/public\" alt=\"\" class=\"wp-image-29287\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-VPS-hosting_in-text-banner.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-VPS-hosting_in-text-banner.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-VPS-hosting_in-text-banner.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-VPS-hosting_in-text-banner.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-VPS-hosting_in-text-banner.png\/w=1536,fit=scale-down 1536w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><h3 class=\"wp-block-heading\">2. Instala cron<\/h3><p>La mayor&iacute;a de las distribuciones de Linux incluyen cron por defecto. Para confirmar que est&aacute; instalado y en ejecuci&oacute;n, comprueba el estado del servicio:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">systemctl status cron<\/pre><figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"2048\" height=\"561\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/terminal-systemctl-status-cron-active-running-highlighted-2048x561-1.png\/public\" alt=\"Estado del servicio cron en terminal\" class=\"wp-image-50300\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/terminal-systemctl-status-cron-active-running-highlighted-2048x561-1.png\/w=2048,fit=scale-down 2048w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/terminal-systemctl-status-cron-active-running-highlighted-2048x561-1.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/terminal-systemctl-status-cron-active-running-highlighted-2048x561-1.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/terminal-systemctl-status-cron-active-running-highlighted-2048x561-1.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/terminal-systemctl-status-cron-active-running-highlighted-2048x561-1.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/terminal-systemctl-status-cron-active-running-highlighted-2048x561-1.png\/w=1536,fit=scale-down 1536w\" sizes=\"(max-width: 2048px) 100vw, 2048px\" \/><\/figure><p>Si falta el servicio, inst&aacute;lalo con tu gestor de paquetes.<\/p><ul class=\"wp-block-list\">\n<li>Para Ubuntu y Debian<\/li>\n<\/ul><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">sudo apt update\nsudo apt install cron<\/pre><ul class=\"wp-block-list\">\n<li>Para RHEL, CentOS y Fedora:<\/li>\n<\/ul><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">sudo dnf install cronie\nsudo systemctl enable crond\nsudo systemctl start crond<\/pre><h3 class=\"wp-block-heading\">3. Crea o edita un archivo crontab<\/h3><p>La principal forma de programar tareas es con el comando crontab. Para crear un nuevo archivo crontab o editar uno existente, ejecuta:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">crontab -e<\/pre><p>Si tu sistema a&uacute;n no tiene un archivo crontab para tu usuario, este comando crea uno autom&aacute;ticamente.<\/p><p>Si es la primera vez que ejecutas el comando, el sistema te pedir&aacute; que elijas un editor de texto, como <strong>nano <\/strong>o <strong>vim<\/strong>. <a href=\"\/es\/tutoriales\/instalar-nano-text-editor\">nano<\/a> suele ser m&aacute;s f&aacute;cil para los principiantes.<\/p><p>Una vez abierto el archivo, a&ntilde;ade tu tarea programada en una nueva l&iacute;nea.<\/p><figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"2048\" height=\"1239\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/terminal-nano-tmp-crontab-2048x1239-1.png\/public\" alt=\"Terminal nano\" class=\"wp-image-50301\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/terminal-nano-tmp-crontab-2048x1239-1.png\/w=2048,fit=scale-down 2048w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/terminal-nano-tmp-crontab-2048x1239-1.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/terminal-nano-tmp-crontab-2048x1239-1.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/terminal-nano-tmp-crontab-2048x1239-1.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/terminal-nano-tmp-crontab-2048x1239-1.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/terminal-nano-tmp-crontab-2048x1239-1.png\/w=1536,fit=scale-down 1536w\" sizes=\"(max-width: 2048px) 100vw, 2048px\" \/><\/figure><p>Para un desglose detallado de la sintaxis de cron, consulta nuestra gu&iacute;a sobre <a href=\"\/es\/tutoriales\/sintaxis-crontab\">c&oacute;mo escribir comandos crontab<\/a>.<\/p><p>\n\n\n\n<div class=\"protip\">\n                    <h4 class=\"title\">Consejo profesional<\/h4>\n                    <p>Antes de programar una tarea cron, prueba tu script manualmente para confirmar que funciona. Ejecuta el script directamente a trav&eacute;s de SSH, por ejemplo <strong>.\/backup.sh<\/strong>. Si no se ejecuta manualmente, tampoco lo har&aacute; a trav&eacute;s de cron.<\/p>\n                <\/div>\n\n\n\n<\/p><h3 class=\"wp-block-heading\">4. Observa tareas programadas<\/h3><p>Para ver los cron jobs programados para tu cuenta de usuario sin editarlas, utiliza el indicador de lista:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">crontab -l<\/pre><figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1878\" height=\"1410\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/terminal-crontab-l-apt-update-highlighted.png\/public\" alt=\"Terminal crontab\" class=\"wp-image-50302\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/terminal-crontab-l-apt-update-highlighted.png\/w=1878,fit=scale-down 1878w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/terminal-crontab-l-apt-update-highlighted.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/terminal-crontab-l-apt-update-highlighted.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/terminal-crontab-l-apt-update-highlighted.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/terminal-crontab-l-apt-update-highlighted.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/terminal-crontab-l-apt-update-highlighted.png\/w=1536,fit=scale-down 1536w\" sizes=\"(max-width: 1878px) 100vw, 1878px\" \/><\/figure><p>Para ver los cron jobs de un usuario espec&iacute;fico, ejecuta el siguiente comando y sustituye el nombre de usuario por el nombre de cuenta correspondiente. Ten en cuenta que esto requiere privilegios de root o elevados.<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">sudo crontab -u nombredeusuario -l<\/pre><h3 class=\"wp-block-heading\">5. Concede acceso de root si es necesario<\/h3><p>Algunos comandos, como las actualizaciones del sistema o los cambios en los archivos de configuraci&oacute;n de todo el sistema, requieren privilegios de root. La forma m&aacute;s sencilla de programar estas tareas es a&ntilde;adirlas al crontab del usuario root:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">sudo crontab -e<\/pre><p>Cualquier comando en el crontab de root se ejecuta con privilegios de root y no requiere configuraci&oacute;n adicional.<\/p><p>\n\n\n\n<div><p class=\"important\"><strong>&iexcl;Importante!<\/strong> Evita ejecutar tareas como root a menos que sea necesario. Si un script s&oacute;lo necesita acceso a archivos o directorios espec&iacute;ficos, considera ajustar la propiedad de los archivos con el <a href=\"\/es\/tutoriales\/comando-chown-linux\">comando chown<\/a> o utilizar una cuenta de servicio dedicada en su lugar.<\/p><\/div>\n\n\n\n<\/p><h3 class=\"wp-block-heading\">6. Utiliza directorios cron para scripts recurrentes<\/h3><p>Para los scripts de mantenimiento general que no necesitan ejecutarse en un minuto espec&iacute;fico, puedes colocarlos en directorios predefinidos del sistema.&nbsp;<\/p><p>El sistema ejecuta autom&aacute;ticamente los scripts que se encuentran en estas ubicaciones:<\/p><ul class=\"wp-block-list\">\n<li><strong>\/etc\/cron.hourly\/<\/strong><\/li>\n\n\n\n<li><strong>\/etc\/cron.daily\/<\/strong><\/li>\n\n\n\n<li><strong>\/etc\/cron.weekly\/<\/strong><\/li>\n\n\n\n<li><strong>\/etc\/cron.monthly\/<\/strong><\/li>\n<\/ul><p>Para ejecutarse correctamente, los scripts de estos directorios deben tener permisos de ejecuci&oacute;n y seguir las reglas de nomenclatura de<strong> las partes de ejecuci&oacute;n<\/strong>:<\/p><ul class=\"wp-block-list\">\n<li>Los nombres de archivo s&oacute;lo pueden incluir letras may&uacute;sculas y min&uacute;sculas, d&iacute;gitos, guiones bajos (<strong>_<\/strong>) y guiones <strong>(-<\/strong>).<\/li>\n\n\n\n<li>Los nombres de archivo no deben utilizar extensiones de archivo. Por ejemplo, un script llamado <strong>backup.sh <\/strong>ser&aacute; ignorado. C&aacute;mbiale el nombre a <strong>backup<\/strong>.<\/li>\n\n\n\n<li>Los nombres de archivo no deben contener puntos (<strong>.<\/strong>) en ninguna parte. Por ejemplo<strong>, mi.script <\/strong>fallar&aacute; silenciosamente, lo cual es una fuente com&uacute;n de errores.<\/li>\n<\/ul><h3 class=\"wp-block-heading\">7. Elimina tareas programadas<\/h3><p>Para eliminar todas las tareas cron para el usuario actual, utiliza la bandera remove:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">crontab -r<\/pre><p>Dado que este comando elimina todas las entradas al instante, es m&aacute;s seguro combinarlo con el indicador interactivo (<strong>-i<\/strong>). Esta opci&oacute;n pide confirmaci&oacute;n antes de eliminar todas las tareas programadas:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">crontab -ri<\/pre><figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1024\" height=\"90\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/terminal-crontab-ri.png\/public\" alt=\"Terminal crontab -ri\" class=\"wp-image-50303\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/terminal-crontab-ri.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/terminal-crontab-ri.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/terminal-crontab-ri.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/05\/terminal-crontab-ri.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><p>\n\n\n\n<div><p class=\"important\"><strong>&iexcl;Importante! La opci&oacute;n -i <\/strong>s&oacute;lo funciona cuando se utiliza con <strong>-r<\/strong>. Ejecutar <strong>crontab -i <\/strong>por s&iacute; solo no tiene ning&uacute;n efecto.<\/p><\/div>\n\n\n\n<\/p><h2 class=\"wp-block-heading\" id=\"h-cual-es-el-siguiente-paso-despues-de-programar-un-cron-job\">&iquest;Cu&aacute;l es el siguiente paso despu&eacute;s de programar un cron job?<\/h2><p>Los cron jobs automatizan tareas recurrentes combinando el daemon cron (que se ejecuta continuamente), el archivo crontab (que establece la programaci&oacute;n) y el comando que realiza el trabajo. Esta automatizaci&oacute;n es esencial para una gesti&oacute;n eficaz del sistema y para realizar tareas rutinarias sin intervenci&oacute;n manual.<\/p><p>Sin embargo, las tareas cron s&oacute;lo son tan potentes como los scripts que ejecutan. El daemon cron ejecuta comandos en momentos determinados, pero el script realiza el trabajo real. Y si el script contiene errores, la tarea fallar&aacute; aunque el trabajo cron se ejecute correctamente.<\/p><p>Aprender a escribir scripts Bash eficientes te permite automatizar tareas complejas y valiosas mediante cron. Echa un vistazo a nuestro <a href=\"\/es\/tutoriales\/bash-script-linux\">tutorial de scripts Bash<\/a> para empezar.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Una tarea cron o cron job es un programador basado en el tiempo en sistemas operativos tipo Unix, como Linux y macOS. Automatiza tareas repetitivas como las copias de seguridad, el mantenimiento del sistema y la ejecuci&oacute;n de scripts. Los usuarios definen una programaci&oacute;n y un comando en un archivo crontab para mantener los procesos [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"\/es\/tutoriales\/cron-job\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":353,"featured_media":50291,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"rank_math_title":"Cron job en Linux: qu\u00e9 es, c\u00f3mo funciona y ejemplos en %currentyear%","rank_math_description":"Descubre qu\u00e9 es un cron job y c\u00f3mo programar tareas con crontab en Linux. Incluye sintaxis, operadores, ejemplos reales y permisos. ","rank_math_focus_keyword":"cron job","footnotes":""},"categories":[5700],"tags":[13133],"class_list":["post-10671","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vps","tag-cron-job"],"hreflangs":[{"locale":"en-US","link":"https:\/\/www.hostinger.com\/tutorials\/cron-job","default":0},{"locale":"pt-BR","link":"https:\/\/www.hostinger.com\/br\/tutoriais\/cron-job-guia","default":0},{"locale":"fr-FR","link":"https:\/\/www.hostinger.com\/fr\/tutoriels\/cron-job","default":0},{"locale":"es-ES","link":"https:\/\/www.hostinger.com\/es\/tutoriales\/cron-job","default":0},{"locale":"id-ID","link":"https:\/\/www.hostinger.com\/id\/tutorial\/cron-job","default":0},{"locale":"en-UK","link":"https:\/\/www.hostinger.com\/uk\/tutorials\/cron-job","default":0},{"locale":"en-MY","link":"https:\/\/www.hostinger.com\/my\/tutorials\/cron-job","default":0},{"locale":"en-PH","link":"https:\/\/www.hostinger.com\/ph\/tutorials\/cron-job","default":0},{"locale":"es-MX","link":"https:\/\/www.hostinger.com\/mx\/tutoriales\/cron-job","default":0},{"locale":"es-CO","link":"https:\/\/www.hostinger.com\/co\/tutoriales\/cron-job","default":0},{"locale":"es-AR","link":"https:\/\/www.hostinger.com\/ar\/tutoriales\/cron-job","default":0},{"locale":"pt-PT","link":"https:\/\/www.hostinger.com\/pt\/tutoriais\/cron-job-guia","default":0},{"locale":"en-IN","link":"https:\/\/www.hostinger.com\/in\/tutorials\/cron-job","default":0},{"locale":"en-CA","link":"https:\/\/www.hostinger.com\/ca\/tutorials\/cron-job","default":0},{"locale":"en-AU","link":"https:\/\/www.hostinger.com\/au\/tutorials\/cron-job","default":0},{"locale":"en-NG","link":"https:\/\/www.hostinger.com\/ng\/tutorials\/cron-job","default":0}],"acf":[],"_links":{"self":[{"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/posts\/10671","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/users\/353"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/comments?post=10671"}],"version-history":[{"count":16,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/posts\/10671\/revisions"}],"predecessor-version":[{"id":50304,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/posts\/10671\/revisions\/50304"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/media\/50291"}],"wp:attachment":[{"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/media?parent=10671"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/categories?post=10671"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/tags?post=10671"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}