Você provavelmente já ouviu o tom padrão da WSL antes. O subsistema Windows para Linux fornece aos usuários um ambiente para executar aplicativos, comandos e ferramentas gráficas Linux. Esta etapa é correta, e o fato de você poder acessar o Linux sem inicialização dupla ou criar uma máquina virtual separada é motivo suficiente para instalar o WSL. Mas há outra maneira prática de usá-lo que você talvez não espere. Gosto de aproveitar as vantagens do utilitário cron do Linux para executar scripts automaticamente em meu sistema de arquivos do Windows, acessível nativamente via WSL.

A maioria dos guias de automação do Windows indicará o Agendador de Tarefas e o PowerShell, que certamente são ferramentas capazes. Mas há algo que gosto em usar o cron. Sua configuração é simples; é mais fácil obter uma visão geral de todas as tarefas e não preciso usar a ferramenta do assistente da GUI sempre que quiser agendar algo novo. Além disso, posso criar scripts de tarefas no Bash. A simplicidade do cron e o uso de ferramentas Linux em arquivos do Windows tornam o WSL viável como camada de automação.

Há uma pequena configuração inicial

Configurando o cron para ser executado automaticamente

Uma pequena ressalva é que o WSL (e, portanto, o cron) não inicia automaticamente no Windows. Você deve executar o WSL manualmente para ativar as tarefas automatizadas. Mesmo fechar o WSL posteriormente é bom, mas precisa ser executado uma vez para ativar o serviço em segundo plano. Executar WSL e cron na inicialização é a única coisa para a qual uso o agendador de tarefas. Se você deseja que seus cron jobs entrem em vigor assim que o Windows for carregado, este é um requisito único. A configuração leva apenas alguns minutos e a tarefa apenas mantém o WSL ativo em segundo plano (nada visível para o usuário).

Comece criando uma nova tarefa e dando um nome a ela Inicie o WSL (ou o que você quiser). Não deixe de conferir Execute estando o usuário logado ou não caixa ou não funcionará. Escolher Durante a inicialização gatilho e Inicie o programa para operação. Digitar wsl.exe para o programa e -d Ubuntu-24.04 --exec sleep infinity argumentos, substituindo sua própria distribuição onde disse Ubuntu-24.04. Para o nome exato da sua distribuição WSL, digite wsl -l No terminal PowerShell. Isso é tudo. Agora o WSL e seus cron jobs configurados serão executados quando você iniciar o Windows sem sua intervenção.

Cron oferece ao Windows uma nova maneira de agendar tarefas

Uma alternativa de texto simples para um assistente GUI

Usar o cron dentro do WSL é idêntico ao usá-lo no Linux nativo. Executar crontab -e para começar a identificar empregos. Por exemplo, eu uso esta linha para chamar meu script de backup rsync todas as noites às 2h:

0 2 * * * /home/user/rsync.sh

Observe que o WSL (e o cron) podem interagir diretamente com o sistema de arquivos do Windows – a unidade C: está por padrão em /mnt/c, mas o WSL também pode ver unidades secundárias ou outro armazenamento que você anexou. Eu uso esta função para que o cron libere a pasta de cache do Windows uma vez por semana (todos domingos à meia-noite):

0 0 * * 0 rm -rf /mnt/c/Users/Username/AppData/Local/Temp/*

Sim, eu sei que o Storage Sense já foi projetado para cobrir a limpeza normal do cache. Eu também uso. Mas os menus do Windows muitas vezes carecem de transparência e simplicidade. Usar o cron me dá controle preciso sobre as tarefas automatizadas e não preciso me perguntar quais coisas que não estão listadas na caixa de seleção da GUI podem ou não ser incluídas.

Os executáveis ​​do Windows também podem ser chamados diretamente do cron, o que permite algumas possibilidades interessantes. Parece irônico, mas o cron do WSL pode até atualizar todos os seus aplicativos do Windows. Esta linha usa WinGet para verificar versões mais recentes de todos os softwares instalados e instalar silenciosamente quaisquer atualizações disponíveis:

0 8 * * MON /mnt/c/Users/Username/AppData/Local/Microsoft/WindowsApps/winget.exe upgrade --all --silent --accept-package-agreements --accept-source-agreements

Esta tarefa está configurada para ser executada todas as segundas-feiras às 8h. Para isso, eu diria que usar as ferramentas de automação do próprio Windows é, na verdade, mais difícil. Tarefas que possuem argumentos longos e finais são mais legíveis no cron do que na GUI, e encadeá-las é mais fácil.

WSL nem sempre é a decisão certa

Você ainda pode fazer tudo sem Bash

Para ser justo, tudo o que descrevi também pode ser alcançado sem o WSL. O PowerShell possui integração com o Agendador de Tarefas e um pipeline de objetos melhor que o Bash para determinadas tarefas, incluindo a capacidade de manipular dados estruturados. Se você já possui scripts do PowerShell configurados para suas tarefas automatizadas, não há vantagem em desmontá-los para portá-los para WSL.

A razão pela qual considero a coroa WSL benéfica é que já me sinto confortável escrevendo scripts Bash e queria trazer essa mesma memória muscular para o Windows. Também acho o agendador de tarefas muito complicado de usar, especialmente se o trabalho tiver argumentos longos ou depender de outro script sendo executado primeiro. O Cron lida com ambos com elegância e todo o cronograma está em um arquivo de texto simples que posso ler rapidamente. O PowerShell ainda é a resposta certa se você estiver criando a automação nativa do Windows do zero, mas o WSL é uma boa alternativa se você já tiver experiência em bash e quiser trabalhar da maneira usual.

A WSL não anuncia tudo o que é capaz

WSL se concentra fortemente em seu apelo aos desenvolvedores: o ambiente de construção Linux, contêineres Docker e ferramentas Linux. O ângulo de agendamento e automação é amplamente esquecido, e isso é uma pena. É a ferramenta perfeita para o usuário avançado que deseja apenas que sua máquina Windows cuide de si mesma durante a noite.

Link da fonte