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.
Índice
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.
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 service
para 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.
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 start
e 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”.
Quando ele iniciar, procure na seção “Ações” e selecione “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”.
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”.
Na próxima seção, queremos “Iniciar um programa”. Essa opção é selecionada por padrão, então clique em “Avançar”.
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
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”.
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”.
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.
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.