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 detrás de escena para su instalación de WSL.
Cron no se ejecuta por defecto
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 este problema, puede iniciar cron manualmente cada vez que abra la línea de comando, pero iniciar manualmente una herramienta diseñada para automatizar tareas no sirve.
Afortunadamente, existe una manera fácil de solucionar este problema y requiere el uso del Programador de tareas.
Si nunca ha usado cron para ejecutar tareas en Linux, consulte nuestro tutorial anterior sobre 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 usaremossudo 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.
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.
Arriba:Esto también funciona en el subsistema de Windows para Linux en Windows 11, no solo en Windows 10.
Cómo programar tareas en Linux: una introducción a los archivos Crontab
Preparar Linux
Lo primero que debemos hacer es permitir que la computadora ejecute cron sin contraseña. Siempre que inicie un servicio como cron use el comandosudo 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 ingresesudo visudo
. Sople Enter Ingrese su contraseña de Linux en su teclado y presione la tecla Enter nuevamente. Si está utilizando Ubuntu, el archivo sudoers se abrirá en el editor de texto de línea de comando Nano, fácil de usar 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 y Ctrl + x para salir del archivo.
%sudo ALL=NOPASSWD: /usr/sbin/service cron start
Este comando sudoers dice que cualquier usuario que tenga permisos suficientes para usar el comando sudo (que debería incluirlo a usted) no requiere una contraseña para ejecutar el comando.sudo service cron start
eso inicia el demonio cron.
Después de guardar el archivo, puede verificar que el comando hace su trabajo escribiendosudo service cron start
, y debería iniciar cron sin pedir una contraseña. Cuando eso funcione, desactivaremos cron nuevamente para que podamos probar que la tarea que estamos creando en el siguiente paso funciona correctamente. Para hacer esto, ejecutesudo service cron stop
.
Configurar Cron en el Programador de tareas de Windows
Esta es la primera fase 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".
Cuando comience, busque en la sección Acciones y elija Crear tarea básica.
Esto abrirá el Asistente para tareas básicas. Primero se le pedirá que nombre y describa la tarea. Aquí puedes introducir 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 el siguiente apartado. Primero, Windows quiere saber cuándo queremos realizar la tarea. Seleccione el botón de opción Cuando se inicia mi computadora y haga clic en Siguiente.
En la siguiente sección queremos "iniciar un programa". Esta opción está seleccionada de forma predeterminada, así que haga clic en Siguiente.
Ahora necesitamos especificar el programa que queremos ejecutar, que es WSL. Ingrese Ingrese 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 debemos decirle a Ubuntu que inicie cron. En el cuadro Agregar argumentos, agregue lo siguiente:sudo /usr/sbin/service cron start
Haga clic en Siguiente nuevamente, seleccione la casilla de verificación Abrir el cuadro de diálogo de propiedades cuando hago clic en Finalizar y luego haga clic en Finalizar.
La tarea está creada, pero tenemos que dar un último paso 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. Necesitamos seleccionar el botón de opción que dice "Ejecutar si el usuario ha iniciado sesión o no" y luego presionar "Aceptar". ”.
Ahora probemos nuestra tarea de dos maneras. Primero, desplácese hacia abajo en la ventana principal del Programador de tareas hasta que vea el nombre de su tarea. Si utilizó el nombre "cron", debería estar en la parte superior de la lista. Haga clic derecho en la tarea y elija Ejecutar.
Luego regrese a su terminal WSL e ingresesudo service cron status
, y debería decir cron se está ejecutando. Si no es así, verifique que haya ingresado todo correctamente en los pasos anteriores.
Si todo funcionó correctamente durante la primera revisión, es hora de la gran prueba. Reinicie su PC y cuando regrese abra una terminal WSL y ejecútelasudo service cron status
eso debería informar que cron ahora se está ejecutando.
¡Felicidades! Ha dado su primer paso hacia un mundo más grande y automatizado. Cuando cron se ejecuta en segundo plano, las tareas cron que configura en WSL se ejecutan automáticamente según una programación.