Como iniciar o Cron automaticamente no WSL no Windows 10 e 11

Uma mão segurando um cronômetro.
Bilhões de fotos / Shutterstock.com

O Windows possui várias maneiras de automatizar tarefas. A ferramenta mais comum é o Windows Task Scheduler, mas se você estiver usando o Windows Subsystem for Linux (WSL) , há também o cron daemon que executa tarefas em segundo plano para a instalação do WSL.

Cron não está sendo executado por padrão

No Windows 10 e no Windows 11, o cron vem incluído em ambientes Linux como o Ubuntu. O problema é que o WSL não inicia o cron automaticamente, o que significa que suas tarefas automatizadas não são executadas por padrão.

Para consertar isso, você poderia iniciar o cron manualmente toda vez que abrir a linha de comando, mas iniciar manualmente uma ferramenta que supostamente automatiza tarefas está meio que perdendo o ponto.

Felizmente, existe uma maneira fácil de corrigir isso e requer o uso do Agendador de Tarefas.

Uma janela de terminal WSL do Windows mostrando que o cron não está em execução.

Se você nunca usou o cron no Linux para executar tarefas, verifique nosso tutorial anterior sobre como agendar tarefas no Linux . Para nossos propósitos aqui, vamos supor que você já criou alguns cron jobs na instalação do WSL e que precisa de ajuda para garantir que eles sejam executados em vez de tomar conta do cron o tempo todo.

Para este tutorial, vamos usar sudo servicepara verificar e iniciar o cron, que é a maneira recomendada de parar e iniciar serviços em compilações modernas do Ubuntu – a distribuição mais popular para WSL.

Além disso, observe que este tutorial pressupõe que você tenha direitos de administrador em sua versão do WSL. Se você for o único usuário do seu PC e habilitou o WSL por conta própria, você tem direitos de administrador.

Dica: isso funciona no subsistema do Windows para Linux no Windows 11 também – não apenas no Windows 10.

Prepare Linux

A primeira coisa que temos que fazer é permitir que o computador inicie o cron sem uma senha. Ao iniciar um serviço como o cron, você usa o comando sudo service cron start. Mas esse comando requer uma senha, à qual o Windows não terá acesso quando for inicializado. A maneira de contornar isso é desativar a exigência de uma senha para este comando.

Recomendado:  Como funciona o Auto-HDR no Xbox Series X | S (e como desativá-lo)

Para fazer isso, abra a janela do terminal WSL e digite sudo visudo. Pressione Enter no teclado, insira sua senha do Linux e pressione a tecla Enter novamente. Se você estiver usando o Ubuntu, o arquivo “sudoers” será aberto usando o editor de texto de linha de comando Nano, para iniciantes . Sudoers é um arquivo para administradores de sistema que podem alterar os privilégios e direitos de acesso dos usuários.

Adicione o seguinte comando ao final do arquivo sudoers e pressione Ctrl + o para salvar e Ctrl + x para sair do arquivo.

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

Este comando sudoers diz que qualquer usuário que tenha privilégios suficientes para usar o comando sudo (que deve incluir você) não requer uma senha para executar o comando sudo service cron start, que inicia o daemon cron.

Depois de salvar o arquivo, você pode verificar se o comando está fazendo seu trabalho digitando sudo service cron starte deve iniciar o cron sem solicitar uma senha. Se funcionou, vamos desligar o cron novamente para que possamos testar se a tarefa que estamos criando na próxima etapa funciona corretamente. Para fazer isso, por favor, corra sudo service cron stop.

Configure o Cron no Agendador de Tarefas do Windows

Essa é a primeira fase de nossa jornada em direção à automação cron. Vamos passar para a parte 2 com o Agendador de tarefas. Toque na tecla Windows no teclado e, em seguida, pesquise “Agendador de tarefas”. Inicie o atalho “Agendador de tarefas”.

Resultados da pesquisa no Windows 10 mostrando o Agendador de Tarefas como uma opção.

Quando ele iniciar, procure na seção “Ações” e selecione “Criar Tarefa Básica”.

Agendador de tarefas do Windows 10 com uma seta vermelha apontando para a opção "Criar tarefa básica".

Isso abre o Assistente de Tarefa Básica. Primeiro, ele pedirá que você nomeie a tarefa e dê uma descrição. Você pode inserir o que quiser aqui. Chamamos a tarefa de “cron” e a descrição é “Uma tarefa para iniciar o cron na inicialização do sistema”. Agora, clique em “Próximo”.

Recomendado:  Como tirar fotos de longa exposição em um telefone Samsung Galaxy

Na seção seguinte, vamos ao que interessa. Primeiro, o Windows quer saber quando queremos executar a tarefa. Escolha o botão de opção “Quando o computador inicia” e clique em “Avançar”.

Um conjunto de botões de opção no Windows 10 com uma seta vermelha apontando para a opção "Quando o computador inicia".

Na próxima seção, queremos “Iniciar um programa”. Essa opção é selecionada por padrão, então clique em “Avançar”.

Opções de programa do Agendador de tarefas do Windows 10 com setas vermelhas apontando para o caminho do programa e a caixa de entrada de texto de argumentos adicionais.

Agora, temos que especificar o programa que queremos executar, que é WSL. Digite o seguinte na caixa de entrada de texto “Programa / Script”:C:\Windows\System32\wsl.exe

Também precisamos adicionar alguns argumentos, já que tudo o que fizemos até agora foi iniciar o WSL, mas dentro do WSL, precisamos dizer ao Ubuntu para iniciar o cron. Portanto, na caixa “Adicionar Argumentos”, adicione:sudo /usr/sbin/service cron start

Janela de criação de tarefa final do Agendador de tarefas do Windows 10 com uma seta vermelha apontando para a opção de abrir a janela de propriedades da tarefa no final.

Pressione “Avançar” mais uma vez, marque a caixa que diz “Abrir a caixa de diálogo Propriedades quando eu clicar em Concluir” e, em seguida, clique em “Concluir”.

Uma janela de propriedades de tarefas do Windows com uma seta vermelha apontando para a opção "Executar esteja o usuário conectado ou não".

A tarefa está criada, mas temos que fazer uma coisa final para garantir que tudo funcione. Uma nova janela será aberta, mostrando o resumo da tarefa que você criou, mas só será configurada para ser executada quando você estiver conectado. Precisamos selecionar o botão de opção que diz “Executar esteja o usuário conectado ou não” e pressione “OK”.

Agora, vamos testar nossa tarefa de duas maneiras. Primeiro, na janela principal do Agendador de tarefas, role para baixo até ver o nome da sua tarefa. Se você usou o nome “cron”, ele deve ser encontrado no topo da lista. Clique com o botão direito na tarefa e selecione “Executar”.

Uma janela de terminal mostrando que o cron está em execução.

Em seguida, volte para o terminal WSL e digite sudo service cron status, e deve dizer que o cron está em execução. Se não estiver, verifique novamente se você inseriu tudo corretamente nas etapas anteriores.

Recomendado:  Como contar caracteres em uma célula no Planilhas Google

Se tudo funcionou corretamente na primeira verificação, é hora do grande teste. Reinicie seu PC e, quando voltar, abra um terminal WSL e execute sudo service cron status, o que deve relatar que o cron agora está em execução.

Parabéns! Você deu seu primeiro passo em um mundo maior e automatizado. Com o cron em execução em segundo plano, os cronjobs que você configura no WSL serão executados automaticamente conforme a programação.