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 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 solucionar 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.
Afortunadamente, hay una manera fácil de solucionar este problema y requiere usar el Programador de tareas.
Si nunca ha usado cron en Linux para ejecutar tareas, consulte nuestro tutorial anterior sobre 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 verificar 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.
Además, 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.
Sugerencia: Esto también funciona en el subsistema de Windows para Linux en Windows 11 , no solo en Windows 10.
Preparar Linux
Lo primero que tenemos que hacer es permitir que la computadora inicie cron sin contraseña. Cuando inicia un servicio como cron, usa el comando sudo service cron start
. Pero ese comando requiere 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 amigable 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 luego 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 usar el comando sudo (que debería incluirlo a usted) no requiere 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 fase 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 luego busque «Programador de tareas». Inicie el acceso directo del «Programador de tareas».
Cuando se inicie, busque en la sección «Acciones» y seleccione «Crear tarea básica».
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 quieras 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 siguiente sección, nos ponemos manos a la obra. 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».
En la siguiente sección, queremos «Iniciar un programa». Esa opción está seleccionada de forma predeterminada, así que haga clic en «Siguiente».
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:\Windows\System32\wsl.exe
También necesitamos agregar algunos argumentos, ya 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
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 luego haz clic en «Finalizar».
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 seleccionar el botón de radio que dice «Ejecutar si el usuario está conectado o no» y luego 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 superior de la lista. Haga clic con el botón derecho en la tarea y seleccione «Ejecutar».
Luego, 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.