Windows tiene varias formas de automatizar las 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 está el daemon de Cron que ejecuta tareas en el fondo para su instalación de WSL.
Cron no está funcionando por defecto
En Windows 10 y Windows 11, Cron viene incluido con entornos de 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 esto, puede iniciar CRON manualmente cada vez que abra la línea de comandos, pero comenzar manualmente una herramienta que se supone que debe automatizar las tareas es un tipo de falta de punto.
Afortunadamente, hay una manera fácil de solucionar esto, y requiere usar el programador de tareas.
Si nunca ha usado Cron en Linux para ejecutar tareas, consulte nuestro tutorial anterior en Cómo programar tareas en Linux . Para nuestros propósitos aquí, vamos a asumir que ya ha creado algunos trabajos de CRON en su instalación de WSL y que necesita ayuda para asegurarse de que se ejecuten en lugar de cuidar a CRON todo el tiempo.
Para este tutorial, vamos a usar.
Servicio sudo
Para verificar e iniciar Cron, que es la forma recomendada de detener y comenzar los servicios en las compilaciones 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 usted es el único usuario de su PC y ha habilitado WSL por su cuenta, entonces tiene derechos de administrador.
Propina: Esto funciona en el Subsistema de Windows para Linux en Windows 11 , demasiado, no solo en Windows 10.
RELACIONADO: Cómo programar tareas en Linux: una introducción a los archivos de Crontab
Preparar linux
Lo primero que tenemos que hacer es permitir que la computadora comience a CRON sin una contraseña. Cuando inicia un servicio como Cron, usas el comando
SUED SERVICIO CRON START
. Pero ese comando requiere una contraseña, a qué ventanas no tendrá acceso a cuando se inicie. El camino alrededor de esto es desactivar el requisito de una contraseña para este comando.
Para hacer eso, abra su ventana de terminal WSL y escriba
sudo visudo
. Presione ENTER en su teclado, ingrese su contraseña de Linux y vuelva a ingresar la tecla Intro. Si estás usando Ubuntu, esto abre el archivo "sudoers" usando el principiante amigable
Editor de texto de línea de comandos nano
.
Sudoers
es un archivo para los administradores del sistema que pueden cambiar los privilegios y los derechos de acceso para los usuarios.
Agregue el siguiente comando a la parte inferior del archivo de 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 debe incluirlo) no requiere una contraseña para ejecutar el comando
SUED SERVICIO CRON START
, que comienza el demonio de Cron.
Después de guardar el archivo, puede verificar que el comando está haciendo su trabajo escribiendo
SUED SERVICIO CRON START
, y debe comenzar a Cron sin pedir una contraseña. Si eso funcionó, vuelvas a apagar a Cron para que podamos probar que la tarea que estamos creando en el siguiente paso funciona correctamente. Para hacer eso, por favor ejecute
STOO SERVICE CRON STOP
.
Configure Cron en el Programador de Tarea de Windows
Ese es la fase uno de nuestro viaje hacia Cron Automation. Vamos a pasar a la Parte 2 con el Programador de tareas. Toque la tecla Windows en el teclado y luego busque "Programador de tareas". Inicie el acceso directo de "Programador de tareas".
Cuando se inicia, mira debajo de la sección "Acciones" y seleccione "Crear tareas básicas".
Esto abre el asistente básico de tareas. Primero, le va a pedir que nombre la tarea y le dará una descripción. Puedes ingresar lo que quieras aquí. Llamamos a la tarea "Cron", y la descripción es: "Una tarea para iniciar Cron en el inicio del sistema". Ahora, golpea "Siguiente".
En la siguiente sección, nos bajamos a los negocios. Primero, Windows quiere saber cuándo queremos ejecutar la tarea. Elija el botón "Cuando inicie la computadora" y haga clic en "Siguiente".
En la siguiente sección, queremos "iniciar un programa". Esa opción se selecciona 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 debemos agregar algunos argumentos, ya que todo lo que hemos hecho hasta ahora comienza WSL, pero dentro de WSL, debemos decirle a Ubuntu que comience a CRON. Entonces, en el cuadro "Agregar argumentos", agregue:
SUDO / USR / SBIN / SERVICIO CRON START
Hit "Siguiente" Una vez más, marque la casilla que dice "Abra el cuadro de diálogo Propiedades cuando haga clic en Finalizar", y luego haga clic en "Finalizar".
Se crea la tarea, pero tenemos que hacer una cosa final para asegurarse 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 "Ejecute si el usuario está conectado o no", y luego presione "OK".
Ahora, vamos a probar nuestra tarea de dos maneras. 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", debe encontrarse hacia la parte superior de la lista. Haga clic con el botón derecho en la tarea y seleccione "Ejecutar".
Luego, vuelva a su terminal WSL y escriba
Estado de Sudo Service Cron
, y debería decir que Cron está corriendo. Si no lo es, verifique que haya ingresado todo correctamente en los pasos anteriores.
Si todo funcionara correctamente en el primer cheque, es hora de la gran prueba. Reinicie su PC, y cuando regrese, abra un terminal WSL y ejecute
Estado de Sudo Service Cron
, que debe informar que Cron se está ejecutando.
¡Felicidades! Has dado su primer paso en un mundo más grande y automatizado. Con Cron que se ejecuta en el fondo, los CronJobs que configuran en WSL se ejecutará automáticamente en el horario.