O Windows tem várias maneiras de automatizar tarefas. A ferramenta mais comum é o agendador de tarefas do Windows, mas se você estiver usando o Subsistema Windows para Linux (WSL) Há também o daemon cron que executa tarefas em segundo plano para sua instalação WSL.
Cron não está funcionando por padrão
No Windows 10 e no Windows 11, o cron vem incluído com 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 estão sendo executadas por padrão.
Para consertar isso, você pode iniciar o Cron manualmente toda vez que abrir a linha de comando, mas iniciar manualmente uma ferramenta que deve automatizar tarefas é uma espécie de falta do ponto.
Felizmente, há uma maneira fácil de consertar isso, e requer o uso do agendador de tarefas.
Se você nunca usou o Cron no Linux para executar tarefas, confira nosso tutorial anterior em Como agendar tarefas no Linux . Para os nossos propósitos aqui, vamos assumir que você já criou alguns trabalhos cron em sua instalação do WSL e que você precisa de ajuda para garantir que eles correm em vez de babysitting cron o tempo todo.
Para este tutorial, vamos usar
serviço sudo
Para verificar e iniciar o Cron, qual é a maneira recomendada de parar e iniciar serviços em construções modernas da Ubuntu - a distribuição mais popular para o WSL.
Além disso, observe que este tutorial assume que você tem direitos de administrador em sua versão do WSL. Se você é o único usuário do seu PC e você habilitou o WSL por conta própria, então você tem direitos de administrador.
Gorjeta: Isso funciona no Subsistema Windows para Linux no Windows 11 , também - não apenas no Windows 10.
RELACIONADO: Como agendar tarefas no Linux: uma introdução aos arquivos crontab
Prepare o Linux.
A primeira coisa que temos que fazer é permitir que o computador inicie o cron sem uma senha. Quando você inicia um serviço como o CRON, você usa o comando
SUTO SERVIÇO CRON START
. Mas esse comando requer uma senha, que o Windows não terá acesso quando ele for iniciado. O caminho em torno disso é desligar o requisito para uma senha para este comando.
Para fazer isso, abra a janela do terminal WSL e digite
sudo visdo
. Clique em Enter no teclado, insira sua senha do Linux e aperte a tecla Enter novamente. Se você estiver usando o Ubuntu, isso abre o arquivo "sudoers" usando o iniciante-amigável
Editor de texto de linha de comando nano
.
Sudoers.
é um arquivo para administradores do sistema que podem alterar privilégios e direitos de acesso para usuários.
Adicione o seguinte comando à parte inferior do arquivo sudoers e pressione Ctrl + O para salvar e Ctrl + X para sair do arquivo.
% sudo All = Nopasswd: / usr / sbin / serviço 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
SUTO SERVIÇO CRON START
, que começa o daemon do cron.
Depois de salvar o arquivo, você pode verificar se o comando está fazendo seu trabalho digitando
SUTO SERVIÇO CRON START
e deve começar o cron sem pedir uma senha. Se isso funcionou, vamos desativar o cron novamente para que possamos testar que a tarefa que estamos criando no próximo passo funciona corretamente. Fazer isso, por favor corra
SUTO SERVICE CRON STOP
.
Configure o cron no agendador de tarefas do Windows
Essa é uma fase uma de nossa jornada em direção a Cron Automation. Vamos passar para a parte 2 com o agendador de tarefas. Toque na tecla Windows no teclado e procure por "Agendador de tarefas". Inicie o atalho "Task Scheduler".
Quando ele inicia, olhe sob a seção "Ações" e selecione "Criar tarefa básica".
Isso abre o assistente de tarefas básicas. Primeiro, vai pedir-lhe para nomear a tarefa e dar uma descrição. Você pode inserir o que quiser aqui. Chamamos a tarefa "Cron" e a descrição é: "Uma tarefa para iniciar o cron na inicialização do sistema". Agora, acerte "seguinte".
Na seção seguinte, descemos aos negócios. Primeiro, o Windows quer saber quando queremos executar a tarefa. Escolha o botão "Quando o computador iniciar" 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 correr, o que é WSL. Digite o seguinte para a caixa de entrada de texto "Program / script":
C: \ windows \ system32 \ wsl.exe
Também precisamos adicionar alguns argumentos, já que tudo o que fizemos até agora é começar a WSL, mas dentro da WSL, precisamos dizer ao Ubuntu para iniciar o Cron. Então, na caixa "Adicionar argumentos", adicione:
Sudo / USR / SBIN / SERVIÇO CRON START
Clique em "Next" mais uma vez, marque a caixa que diz "Abra a caixa de diálogo Propriedades quando clique em Concluir", e clique em "Concluir".
A tarefa é criada, mas temos que fazer uma última coisa para garantir que tudo funcione. Uma nova janela será aberta, que mostra o resumo da tarefa que você criou, mas é definido apenas para ser executado quando estiver conectado. Precisamos selecionar o botão de opção que diz "Executar se o usuário está 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 para o topo da lista. Clique com o botão direito na tarefa e selecione "Executar".
Então, volte ao seu terminal WSL e digite
status de cron de serviço sudo
e deve dizer que Cron está correndo. Se não for, verifique novamente o que você digitou tudo corretamente nas etapas anteriores.
Se tudo funcionasse corretamente no primeiro cheque, é hora do grande teste. Reinicie o seu PC e, quando você voltar, abra um terminal WSL e execute
status de cron de serviço sudo
, que deve relatar que Cron está funcionando agora.
Parabéns! Você tomou seu primeiro passo em um mundo maior e automatizado. Com o Cron correndo em segundo plano, os cronjobs que você configuram no WSL serão executados automaticamente na programação.