Saltar al contenido

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

Windows tiene varias formas de automatizar tareas. La herramienta más común es el Programador de tareas de Windows, pero si está utilizando el Subsistema de Windows para Linux (WSL), también existe el demonio cron que se ejecuta en segundo plano para la instalación de WSL.

Cron no se ejecuta de forma predeterminada

En Windows 10 y Windows 11, cron se incluye en entornos Linux como Ubuntu. El problema es que WSL Cron no se inicia automáticamente, lo que significa que sus tareas automatizadas no se ejecutarán de forma predeterminada.

Para solucionar esto, puede iniciar cron manualmente cada vez que abra la línea de comando, pero iniciar manualmente una herramienta diseñada para automatizar tareas no tiene sentido.

Afortunadamente, existe una manera fácil de solucionar este problema y requiere el uso del Programador de tareas.

Una ventana de terminal de Windows WSL que indica que Cron no se está ejecutando.

Si nunca ha usado cron para ejecutar tareas en Linux, consulte nuestro tutorial anterior sobre la programación de tareas en Linux. Para nuestros propósitos aquí, asumimos que ya ha creado algunos trabajos cron en su instalación de WSL y necesita ayuda para asegurarse de que se estén ejecutando en lugar de cuidar constantemente de cron.

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

También tenga en cuenta que este tutorial asume que tiene derechos de administrador para su versión de WSL. Si es el único usuario de su PC y ha activado WSL usted mismo, tiene derechos de administrador.

Propina: Esto también funciona en el subsistema de Windows para Linux en Windows 11, no solo en Windows 10.

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

Preparar Linux

Lo primero que debemos hacer es permitir que la computadora ejecute cron sin una contraseña. Cuando inicias un servicio como cron, usa el comando sudo service cron start. Sin embargo, este comando requiere una contraseña a la que Windows no puede acceder al inicio. Para solucionar este problema, desactive el requisito de contraseña para este comando.

Para hacer esto, abra la ventana de su terminal WSL e ingrese sudo visudo. Presiona Enter en tu teclado, escribe tu contraseña de Linux y presiona Enter nuevamente. Si está utilizando Ubuntu, el archivo sudoers se abrirá en el editor de texto de línea de comandos Nano para principiantes. Sudoers es un archivo para administradores de sistemas que puede cambiar los permisos y derechos de acceso de los usuarios.

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

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

Este comando sudoers dice que cualquier usuario que tenga permisos suficientes para usar el comando sudo (del cual debería ser parte) no necesitará una contraseña para ejecutar el comando sudo service cron startque inicia el demonio cron.

Después de guardar el archivo, puede verificar que el comando hace su trabajo escribiendo sudo service cron start, y debería iniciar cron sin pedir una contraseña. Si eso funcionó, apagaremos cron nuevamente para que podamos probar que la tarea que estamos creando en el siguiente paso está funcionando correctamente. Para hacer esto, ejecute sudo service cron stop.

Configurar Cron en el Programador de tareas de Windows

Esta es la primera etapa de nuestro viaje hacia la automatización cron. Llegamos a la parte 2 con el planificador de tareas. Toque la tecla de Windows en su teclado, luego busque “Programador de tareas”. Inicie el enlace “Programador de tareas”.

Los resultados de la búsqueda en Windows 10 muestran el Programador de tareas como una opción.

Cuando comience, busque en la sección Acciones y seleccione Crear tarea básica.

Programador de tareas de Windows 10 con una flecha roja apuntando hacia él "Crea una tarea sencilla" Oportunidad.

Esto abrirá el asistente de tareas básicas. Primero se le pedirá que nombre y describa la tarea. Aquí puedes ingresar lo que quieras. Llamamos a la tarea “Cron” y la descripción es “Una tarea para iniciar cron al iniciar el sistema”. Ahora haga clic en “Siguiente”.

Nos ponemos manos a la obra en la siguiente sección. Primero, Windows quiere saber cuándo queremos realizar la tarea. Seleccione el botón de opción “Cuando la computadora se inicie” y haga clic en “Siguiente”.

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

En la siguiente sección queremos “iniciar un programa”. Esta opción está seleccionada de forma predeterminada, así que haga clic en Siguiente.

Las opciones del programa del Programador de tareas de Windows 10 con flechas rojas que apuntan a la ruta del programa y el campo de entrada de texto para argumentos adicionales.

Ahora necesitamos especificar el programa que queremos ejecutar, que es WSL. Introduzca lo siguiente en el campo de entrada de texto “Programa / Script”: C:WindowsSystem32wsl.exe

También necesitamos agregar algunos argumentos ya que hasta ahora solo hemos iniciado WSL, pero dentro de WSL necesitamos decirle a Ubuntu que inicie cron. En el cuadro Agregar argumentos, agregue lo siguiente: sudo /usr/sbin/service cron start

La 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 una vez completada.

Vuelva a hacer clic en Siguiente, seleccione la casilla de verificación Abrir cuadro de diálogo de propiedades al hacer clic en Finalizar y, a continuación, haga clic en Finalizar.

Una ventana de Propiedades de tareas de Windows con una flecha roja que apunta a la opción "Ejecutar independientemente de que el usuario haya iniciado sesión o no" indica.

La tarea está creada, pero tenemos un paso final para asegurarnos de que todo funcione. Se abrirá una nueva ventana que muestra el resumen de la tarea que creó, pero solo se ejecutará cuando haya iniciado sesión. Debemos seleccionar el botón de opción que dice “Ejecutar, ya sea que el usuario haya iniciado sesión o no” y luego presionar “Aceptar”. “.

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

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

Luego regresa a tu terminal WSL e ingresa 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 un terminal WSL y ejecútelo sudo service cron statusque debería informar que cron ahora se está ejecutando.

¡Felicidades! Ha dado su primer paso hacia un mundo automatizado más grande. Cuando cron se ejecuta en segundo plano, los trabajos cron que configura en WSL se ejecutan automáticamente según una programación.