O Windows tem várias alternativas para automatizar tarefas. A ferramenta mais comum é o Windows Task Scheduler, mas se você estiver usando o subsistema Windows para Linux (WSL), também há o daemon cron que executa tarefas em segundo plano para a instalação do WSL.
Cron não roda por padrão
No Windows 10 e Windows 11, cron vem empacotado com ambientes Linux como 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 este problema, você pode iniciar o cron manualmente toda vez que abrir a linha de comando, mas iniciar manualmente uma ferramenta que deveria automatizar tarefas é como perder a consciência.
Por sorte, existe uma maneira fácil de corrigir esse problema e você precisa usar o Agendador de Tarefas.
Se você nunca usou cron no Linux para executar tarefas, confira nosso tutorial anterior sobre agendamento de tarefas no Linux. Para nossos propósitos aqui, assumiremos que você já criou alguns cron jobs em sua instalação WSL e precisa de ajuda para garantir que eles sejam executados em vez de cuidar do cron o tempo todo.
Para este tutorial, usaremos sudo service
para verificar e iniciar o cron, que é a maneira recomendada de parar e iniciar serviços em versões modernas do Ubuntu, a distribuição mais popular para WSL.
Ao mesmo tempo, Observe que este tutorial assume que você tem 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, então você tem direitos de administrador.
Gorjeta: Isso também funciona no subsistema Windows para Linux no Windows 11, não só no Windows 10.
RELACIONADO: Como agendar tarefas no Linux: Introdução aos arquivos Crontab
Preparar Linux
A primeira coisa que faremos é permitir que o computador inicie o cron sem uma senha. Quando você inicia um serviço como o cron, use o comando sudo service cron start
. Mas esse comando precisa de uma senha, a que o Windows não terá acesso quando iniciar. A maneira de contornar isso é desabilitar a exigência de uma senha para este comando.
Fazer isso, abra sua janela de terminal WSL e digite sudo visudo
. Pressione Enter no teclado, digite sua senha do Linux e pressione a tecla Enter novamente. Si está usando Ubuntu, isso abre o arquivo “sudoers” usando o editor de texto nano de linha de comando 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 + ou 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 (isso deve incorporar você) você não precisa de uma senha para executar o comando sudo service cron start
, que inicia o cron daemon.
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 pedir 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. Fazer isso, por favor corra sudo service cron stop
.
Configure o Cron no Agendador de Tarefas do Windows
Esse é o primeiro estágio de nossa jornada para a automação cron.. Vamos passar para a parte 2 com o Agendador de Tarefas. Toque na tecla Do Windows no teclado e, em seguida, pesquise “Agendador de tarefas”. Inicie o atalho do “Agendador de tarefas”.
Quando começa, pesquisar a seção “Ações” e selecione “Criar tarefa básica”.
Isso abre o Assistente de Tarefa Básica. Primeiro, irá pedir-lhe para nomear a tarefa e dar-lhe uma descrição. Você pode inserir o que quiser aqui. Nós pedimos lição de casa “cron” e a descrição é “Uma tarefa para iniciar o cron na inicialização do sistema”. Agora, pressione “Próximo”.
Na próxima seção, nós começamos, vamos para isso. Primeiro, O Windows quer saber quando queremos executar a tarefa. Escolha o botão de rádio “Quando o computador começa” e clique “Próximo”.
Na próxima seção, nós queremos “Inicie um programa”. Essa opção é selecionada por padrão, Você pode seguir o mesmo procedimento para adicionar números às suas equações restantes “Próximo”.
Agora, temos que especificar o programa que queremos executar, o que é WSL. Digite o seguinte na caixa de entrada de texto “Programa / Roteiro”: C:WindowsSystem32wsl.exe
Também precisamos adicionar alguns argumentos, já que tudo o que fizemos até agora foi iniciar o WSL, mas dentro de WSL, precisamos dizer ao Ubuntu para iniciar o cron. Então, no quadro “Adicionar argumentos”, adicionar: sudo /usr/sbin/service cron start
pressione “Próximo” mais uma vez, verificar a caixa que diz “Abra a caixa de diálogo de propriedades quando eu clicar em Terminar” e, em seguida, clique “Finalizar”.
A tarefa é criada, mas temos que fazer uma última coisa para garantir que tudo funcione. Uma nova janela se abrirá, que mostra o resumo da tarefa que você criou, mas só está configurado para ser executado quando conectado. Precisamos escolher o botão de rádio que diz “Execute se o usuário está logado ou não” e depois pressione “Aceitar”.
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”, deve estar no topo da lista. Clique com o botão direito da tarefa e selecione “Corre”.
Subseqüentemente, volte para o seu terminal WSL e digite sudo service cron status
, e deve dizer que o cron está sendo executado. Sim, não é assim, verifique se você digitou tudo corretamente nas etapas acima.
Se tudo funcionou corretamente na primeira verificação, é hora do grande teste. Reinicie o seu PC e, quando volta, abra um terminal WSL e execute sudo service cron status
, que deve relatar que o cron agora está em execução.
Parabéns! Você deu seu primeiro passo em direção a um mundo automatizado maior. Com o cron rodando em segundo plano, os cronjobs que você configurou no WSL serão executados automaticamente conforme programado.