Cómo iniciar Cron automáticamente en WSL en Windows 10 y 11

Contenidos

Una mano que sostiene un cronómetro.

Windows tiene varias alternativas para automatizar tareas. La herramienta más común es el Programador de tareas de Windows, pero si está usando el Subsistema de Windows para Linux (WSL), además existe el demonio cron que ejecuta tareas en segundo plano para su instalación de WSL.

Cron no se ejecuta de forma predeterminada

En Windows 10 y Windows 11, cron viene incluido con entornos Linux como Ubuntu. El problema es que WSL no inicia cron automáticamente, lo que significa que sus tareas automatizadas no se ejecutan de forma predeterminada.

Para arreglar este problema, puede iniciar cron manualmente cada vez que abra la línea de comando, pero iniciar manualmente una herramienta que se supone que automatiza las tareas es como perder el sentido.

Por suerte, hay una manera fácil de arreglar este problema y necesita el uso del Programador de tareas.

Una ventana de terminal de Windows WSL que muestra que cron no se está ejecutando.

Si nunca ha usado cron en Linux para ejecutar tareas, consulte nuestro tutorial anterior acerca de cómo programar tareas en Linux. Para nuestros propósitos aquí, asumiremos que ya ha creado algunos trabajos cron en su instalación de WSL y que necesita ayuda para asegurarse de que se ejecuten en lugar de cuidar de cron todo el tiempo.

Para este tutorial, usaremos sudo service para chequear e iniciar cron, que es la forma recomendada de detener e iniciar servicios en versiones modernas de Ubuntu, la distribución más popular para WSL.

Al mismo tiempo, tenga en cuenta que este tutorial asume que tiene derechos de administrador en su versión de WSL. Si es el único usuario de su PC y habilitó WSL por su cuenta, entonces tiene derechos de administrador.

Propina: Esto además funciona en el subsistema de Windows para Linux en Windows 11, no solo en Windows 10.

RELACIONADO: Cómo programar tareas en Linux: Introducción a los archivos Crontab

Preparar Linux

Lo primero que haremos es permitir que la computadora inicie cron sin contraseña. Cuando inicia un servicio como cron, utiliza el comando sudo service cron start. Pero ese comando necesita una contraseña, a la que Windows no tendrá acceso cuando se inicie. La forma de evitar esto es desactivar el requisito de una contraseña para este comando.

Para hacer eso, abra la ventana de su terminal WSL y escriba sudo visudo. Presione Enter en su teclado, ingrese su contraseña de Linux y presione la tecla Enter nuevamente. Si está usando Ubuntu, esto abre el archivo «sudoers» usando el editor de texto de línea de comandos Nano amistoso para principiantes. Sudoers es un archivo para administradores de sistemas que puede cambiar los privilegios y los derechos de acceso de los usuarios.

Agregue el siguiente comando al final del archivo sudoers y posteriormente presione Ctrl + o para guardar y Ctrl + x para salir del archivo.

%sudo ALL=NOPASSWD: /usr/sbin/service cron start

Este comando sudoers dice que cualquier usuario que tenga suficientes privilegios para utilizar el comando sudo (que debería incorporarlo a usted) no necesita una contraseña para ejecutar el comando sudo service cron start, que inicia el demonio cron.

Una vez que haya guardado el archivo, puede verificar que el comando está haciendo su trabajo escribiendo sudo service cron start, y debería iniciar cron sin pedir una contraseña. Si eso funcionó, apaguemos cron nuevamente para que podamos probar que la tarea que estamos creando en el siguiente paso funciona correctamente. Para hacer eso, por favor ejecute sudo service cron stop.

Configurar Cron en el Programador de tareas de Windows

Esa es la etapa uno de nuestro viaje hacia la automatización cron. Pasemos a la parte 2 con el Programador de tareas. Toque la tecla de Windows en el teclado y posteriormente busque «Programador de tareas». Inicie el acceso directo del «Programador de tareas».

Resultados de búsqueda en Windows 10 que muestran el Programador de tareas como una opción.

Cuando se inicie, busque en la sección «Acciones» y seleccione «Crear tarea básica».

Programador de tareas de Windows 10 con una flecha roja que apunta al "Crear tarea básica" opción.

Esto abre el Asistente para tareas básicas. Primero, le pedirá que nombre la tarea y le dé una descripción. Puedes ingresar lo que desees aquí. Llamamos a la tarea «cron» y la descripción es «Una tarea para iniciar cron al iniciar el sistema». Ahora, presione «Siguiente».

En la próxima sección, nos ponemos vamos a ello. Primero, Windows quiere saber cuándo queremos ejecutar la tarea. Elija el botón de opción «Cuando la computadora comience» y haga clic en «Siguiente».

Un conjunto de botones de opción en Windows 10 con una flecha roja que apunta a la opción "Cuando se inicia la computadora".

En la próxima sección, queremos «Iniciar un programa». Esa opción está seleccionada de forma predeterminada, por lo tanto haga clic en «Siguiente».

Opciones del programa del Programador de tareas de Windows 10 con flechas rojas que apuntan a la ruta del programa y al cuadro de entrada de texto de argumentos adicionales.

Ahora, tenemos que especificar el programa que queremos ejecutar, que es WSL. Ingrese lo siguiente en el cuadro de entrada de texto «Programa / Script»: C:WindowsSystem32wsl.exe

Además necesitamos agregar algunos argumentos, puesto que todo lo que hemos hecho hasta ahora es iniciar WSL, pero dentro de WSL, necesitamos decirle a Ubuntu que inicie cron. Entonces, en el cuadro «Agregar argumentos», agregue: sudo /usr/sbin/service cron start

Ventana de creación de tareas final del Programador de tareas de Windows 10 con una flecha roja que apunta a la opción para abrir la ventana de propiedades de la tarea al finalizar.

Presiona «Siguiente» una vez más, marca la casilla que dice «Abrir el cuadro de diálogo de propiedades cuando hago clic en Finalizar» y posteriormente haz un clic en «Finalizar».

Una ventana de propiedades de la tarea de Windows con una flecha roja que apunta a la opción "Ejecutar, ya sea que el usuario haya iniciado sesión o no".

La tarea está creada, pero tenemos que hacer una última cosa para asegurarnos de que todo funcione. Se abrirá una nueva ventana, que muestra el resumen de la tarea que creó, pero solo está configurada para ejecutarse cuando haya iniciado sesión. Necesitamos elegir el botón de radio que dice «Ejecutar si el usuario está conectado o no» y posteriormente presionar «Aceptar».

Ahora, probemos nuestra tarea de dos formas. Primero, en la ventana principal del Programador de tareas, desplácese hacia abajo hasta que vea el nombre de su tarea. Si usó el nombre «cron», debería encontrarse en la parte de arriba de la lista. Haga clic con el botón derecho en la tarea y seleccione «Ejecutar».

Una ventana de terminal que muestra que cron se está ejecutando.

Posteriormente, regrese a su terminal WSL y escriba sudo service cron status, y debería decir que cron se está ejecutando. Si no es así, verifique que haya ingresado todo correctamente en los pasos anteriores.

Si todo funcionó correctamente en la primera verificación, es hora de la gran prueba. Reinicie su PC y, cuando regrese, abra una terminal WSL y ejecute sudo service cron status, que debería informar que cron ahora se está ejecutando.

¡Felicidades! Ha dado su primer paso hacia un mundo automatizado más grande. Con cron ejecutándose en segundo plano, los cronjobs que configure en WSL se ejecutarán automáticamente según lo programado.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.