Como agendar tarefas no linux com o cron e crontab

Você sabia disso Blade Runner

é definido em 2019? Isso é de três anos a partir de agora! Para não mencionar Volta para o Futuro 2, onde eles tempo de viagem para a frente em 2015. No entanto, não temos carros voadores e não há replicantes entre nós (tanto quanto eu sei).

linux-cron-jobs-quote

É fácil sentir-se desapontados com a tecnologia atual quando compará-lo com representações ficcionais do futuro. Ainda assim, estes dias os nossos telefones, computadores, e até mesmo casas pode fazer coisas incríveis. A capacidade de automatizar tarefas é um deles.5 DIY Início Projetos de Automação para começar com o seu Smart Home5 DIY Início Projetos de Automação para começar com o seu Smart HomeQuando se trata de criar casas inteligentes, a maioria das pessoas simplesmente não sabem por onde começar. Aqui estão cinco novatos básicas inteligentes projetos de casa que você pode construir agora.consulte Mais informação

Cada usuário Linux podem se beneficiar de agendamento de tarefas, sejam elas (como limpando os registros antigos relacionados com o sistema e atualização de pacotes) Ou servindo o e-mail do usuário (verificação, download de podcasts ...). Os usuários do Windows têm tido Agendador de tarefas desde o Windows 95. O utilitário que faz o mesmo trabalho no Linux é chamado cron, e aqui vamos explicar como usá-lo.

O que é Cron?

Cron é um serviço de sistema que roda em segundo plano, verifica se há tarefas agendadas, e executa-se encontrar qualquer. As tarefas - também chamado de “trabalhos do cron”- são definidas em arquivos de configuração especiais (crontabs), que cron verifica a cada minuto. Várias versões do cron podem ser encontrados através de diferentes distribuições Linux. Por exemplo, garfo de cron do Fedora é chamado cronie, e há também fcron, bcron e dcron. Alguns têm recursos extras, enquanto outros são mais focados em segurança, mas eles estão todos baseados na mesma idéia.5 Iniciante Linux Idéias configuração para Cron Jobs & Scripts shell5 Iniciante Linux Idéias configuração para Cron Jobs & Scripts shellCom scripting bash, você pode fazer uma série complexa de tarefas de uma só vez rápida por isso é ótimo para as necessidades elaboradas e repetitivas. É também uma ótima maneira de conhecer terminal.consulte Mais informação

Este guia foi escrito para vixie-cron, que é a versão mais difundida de cron e o que você vai encontrar no Ubuntu e seus derivados. Enquanto a maioria das instruções se aplicam a outras implementações de cron também, pode haver pequenas diferenças, de modo a verificar os seus manuais se você decidir mudar.

O que é um Crontab?

Se você é sério sobre como gerenciar seu tempo, você provavelmente tem um calendário de algum tipo - um aplicativo ou pelo menos um pedaço de papel. Crontab é muito parecido com o calendário do seu computador. Ele contém as informações sobre as tarefas agendadas, dizendo cron que comanda para executar em que momento.Organize seu tempo com estes 4 Apps Calendário LinuxOrganize seu tempo com estes 4 Apps Calendário LinuxFaz sentido de continuar a usar um aplicativo de calendário desktop? Nós pensamos assim, especialmente para permitir o acesso a eventos em qualquer dispositivo sincronizado. Esses aplicativos de calendário Linux são particularmente úteis.consulte Mais informação

Video: Automatizando Backup Oracle(Crontab Linux)

Na verdade, vários crontabs estão em seu sistema. Cada usuário tem sua própria crontab, incluindo root (administrador). crontabs usuário são armazenados em / Var / spool / cron / crontabs /. o crontab-l comando irá listar o arquivo crontab para o usuário atual. Você pode verificar o crontab raiz com sudo crontab -l.

Além disso, há o arquivo crontab do sistema / Etc / crontab que é usado para tarefas de todo o sistema. Normalmente, eles tomam a forma de scripts executáveis, de propriedade da raiz colocados em /etc/cron.hourly/, /etc/cron.daily/, /etc/cron.weekly/, e /etc/cron.monthly/ pastas, e em algumas distribuições, o /etc/cron.d/ pasta também. De um modo geral, você não deve ter de lidar com essas tarefas, como a maioria deles são criados automaticamente por aplicativos instalados.

Como agendar tarefas com Cron

Parece simples: para agendar tarefas, basta adicioná-los ao seu crontab. Desde crontab é um arquivo de configuração especial, não é recomendado para editá-lo manualmente. Em vez disso, use o crontab -e comando. Para editar raiz ou outros crontabs dos usuários, execute o comando com privilégios administrativos e adicione seu nome de usuário após a opção -u:

sudo crontab -u -e raiz
sudo crontab -u nome de usuário -e

linux-cron-jobs-crontab-editor

O arquivo crontab tem duas seções. O primeiro contém variáveis ​​de ambiente que são criados automaticamente. Você pode mudar de forma segura as variáveis ​​PATH, em casa, ea Shell, e modificar a variável MAIL.

A segunda parte do arquivo é o “calendário” real com as tarefas agendadas. Cada tarefa ocupa uma linha (linha) na tabela, com colunas que representam os seguintes valores:

linux-cron-jobs-crontab

Para agendar com sucesso tarefas, você precisa saber um pouco sobre a sintaxe crontab:

  • Os números devem ser inteiros (números inteiros), e você pode usar o asterisco (*) em qualquer uma das colunas como um curinga, que significa “a cada minuto / dia / mês ...”.
  • Na coluna “Dia do Mês”, tome cuidado para não estabelecer uma data que não ocorre no mês especificado na coluna “Month” (por exemplo, 30 de fevereiro).
  • Ambos “Mês” e “Dia da Semana” colunas aceitar nomes curtos para meses e dias, respectivamente, e são caso insensível.
  • Na coluna “Dia da Semana”, ambos 0 e 7 suporte para domingo. A coluna “Hour” requer o formato de “horário militar” (24 horas), mas você não pode usar o número 24 - em vez disso, 0 significa 12:00 Isso ocorre porque os valores de minuto, hora e dia da semana início em 0 em vez de um.
  • Segundos não são suportados, então você não pode marcar uma tarefa em um segundo particular.

O que você pode fazer é agendar intervalos de tempo inclusive usando um hífen (14-22 em “Horas” vai executar a tarefa continuamente duas horas - dez horas), ou executar uma única tarefa várias vezes, definindo uma lista separada por vírgulas (1, 3,5 em “Dia da Semana” irá executar a tarefa na segunda-feira, quarta e sexta-feira).

Enquanto isso, os valores da etapa, são representados por uma barra (/), e estes indicam a quantidade de saltos dentro de uma gama-por exemplo, 3-20 / 3 em “Horas” vai executar a tarefa a cada três horas a partir de 03:00 a 8 pm Isso é útil quando você deseja repetir tarefas cada X horas, porque você pode combinar um asterisco e um passo (* / X). Você pode combinar faixas com listas e etapas com intervalos, desde que você está usando números. Em outras palavras, combinações como “jan-mar” ou “Tue, Fri-Sun” não são permitidos.

Alternativamente, em vez de definir um valor para cada coluna, você pode apenas escrever @weekly, @yearly, @monthly, @daily, ou @hourly no início de uma linha, seguido por um comando. Agendada assim, as tarefas serão executadas em primeira instância possível, para @weekly seria executado à meia-noite no primeiro dia da semana. Se você deseja executar uma tarefa imediatamente quando o sistema (re) começa, use o comando @reboot.

linux-cron-jobs-crontab-exemplo

Neste exemplo, temos agendado um backup todos os dias às 08:20 e 20:20. As alterações papel de parede automaticamente a cada três dias às 19:00, e um script verificar se há novos podcasts toda segunda-feira às 10:20 e 20:20. Um lembrete de aniversário está marcada para 25 de Março e que sai a cada 30 minutos dentro do prazo especificado. Finalmente, um script verifica e-mail a cada 15 minutos, de 8 a 20, mas apenas em dias úteis. Você é livre para organizar sua crontab com espaços e abas entre as colunas, mas não dentro deles (não coloque espaços entre vírgulas, hifens e barras).Gerencie seus podcasts em Linux com estes 10 AppsGerencie seus podcasts em Linux com estes 10 AppsLinux não tem uma grande variedade de clientes de podcast, mas não se preocupe - quase todos os modernos leitor de música para Linux pode servir como um podcatcher. Vamos dar uma olhada nas opções.consulte Mais informação

Video: Популярные видео – cron и Linux

Se tudo isso soa muito complicado, não se preocupe - você pode sempre contar com a internet. Ferramentas como Crontab Generator, Crontab.guru e Corntab ajudar a criar empregos cron sem saber qualquer sintaxe crontab. Eles mostram quando o trabalho será executado no próximo, e fornecer modelos para expressões comumente usadas. Crontab.guru é o melhor do grupo, porque ele permite que você live-teste sintaxe crontab, para que possa ver imediatamente como as mudanças afetarão o cronograma.

linux-cron-jobs-crontab-guru

Video: Cómo configurar un archivo crontab en Linux | Ejemplo (inténtalo, para probar tu crontab)

Como verificar se os trabalhos cron são executadas

Cron é suposto para ser executado silenciosamente em segundo plano e deixá-lo trabalhar sem ser perturbado enquanto ele cuida de suas tarefas. Mas como você pode ter certeza que é realmente trabalhando?

Cron tem um recurso de notificação de e-mail embutido, mas isso requer a criação de pelo menos um servidor de correio local simples. Não muitos usuários domésticos estão dispostos a configurar isso, e não muitas distribuições fornecê-la por padrão (por exemplo, o Ubuntu não faz). O caminho mais rápido para check-up em cron é verificar o log do sistema com este comando:Como é que um Email Server funciona? [Tecnologia Explicada]Como é que um Email Server funciona? [Tecnologia Explicada]Por trás de cada e-mail é um poderoso motor chamado de servidor de email que empurra os e-mails através da internet.consulte Mais informação

cat / var / log / syslog | grep -i cron

linux-cron-jobs-log



A opção -i faz com que nosso case-insensitive consulta. É possível que cron terá seu próprio arquivo de log em algum lugar / Var / log /, assim que olhar lá se este comando não consegue produzir resultados úteis.

Se você precisa para salvar a saída de um trabalho cron particular, você pode redirecioná-lo para um arquivo. Forneça o caminho eo nome do arquivo na última coluna do seu crontab, após o comando que você deseja executar:

30 * * * * / usr / bin / yourcommand gt; /home/username/logfile.txt

Usando uma única gt; símbolo irá substituir o arquivo cada vez que o comando é executado. Para evitar isso, use gt; gt; em vez disso - ele acrescenta a saída para o arquivo existente.

What If Cron não está funcionando?

Pode acontecer que você adicionou algumas tarefas, verificou os registros do sistema, e descobriu que eles não estão executando como deveriam. Aqui estão algumas coisas que você deve considerar - e ter cuidado com - ao tentar corrigir o problema.

É o serviço cron em execução?

Como você sabe, o daemon cron deve ser executado em segundo plano. Certifique-se este é realmente o caso. O serviço é ou chamado crond ou apenas cron.

Para distribuições utilizando systemd:

cron estado systemctl

Video: Cómo utilizar Crontab

Para distribuições utilizando Upstart:

estatuto cron serviço

linux-cron-jobs-service-status

Se a sua distribuição está usando a abordagem System V init “velho”, listar todos os serviços com:

lista initctl

e ver se cron está listado.

mesmo que você está autorizado a ter um arquivo crontab?

Verifique se o seu / etc. pasta para arquivos nomeados cron.allow e cron.deny. No Ubuntu, nem deveria existir, o que significa que todos os usuários têm permissão para gerenciar tarefas agendadas. No entanto, se houver uma cron.allow arquivo, ele tem que conter seu nome de usuário. Por outro lado, se o cron.deny arquivo existir, seu nome de usuário não deve estar nele. deixando o cron.deny arquivo em branco significa que somente o root e os usuários listados no cron.allow pode ter arquivos crontab.

São suas variáveis ​​definidas corretamente?

Crontab define automaticamente a variável SHELL para / Bin / sh. No entanto, se o shell de escolha é o peixe ou bash, você deve alterar a variável SHELL. Da mesma forma, a variável PATH contém apenas alguns diretórios por padrão. Este é o lugar onde crontab procura por comandos Linux. Se o seu trabalho cron não está a funcionar, talvez seja porque crontab não “ver” o comando que você usou. Para evitar isto, adicionar listas contendo os comandos para a variável PATH, separados por vírgulas:

PATH = / opt / myapp / bin: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin
7 razões porque você deve instalar o Peixe Shell7 razões porque você deve instalar o Peixe ShellNão gosto de como funciona o seu terminal do Linux? Por que não instalar um novo shell? Um desses shell é o peixe, que introduz características que devem se tornaram lugar-comum, mas não o fez. Vamos dar uma olhada.consulte Mais informação

Se você não quiser editar isso no seu crontab, você pode definir essas variáveis ​​no script que deseja executar como uma tarefa cron.

É o seu crontab formatação no ponto?

sintaxe Crontab não é exatamente bom velejar. Mesmo se você verificar-lo com ferramentas on-line mencionado anteriormente, um pequeno erro pode ainda evitar cron de executar seus trabalhos. Tenha o cuidado de:

  • adicionar uma linha em branco no final do arquivo crontab
  • escapar o sinal% com uma barra invertida se o seu comando inclui-lo
  • escrever comentários como linhas separadas começando com #. Não escrever comentários sobre a mesma linha que as variáveis ​​de ambiente, ou próximo ao cron comandos de emprego.

Você realmente tem que usar o Terminal?

Absolutamente não. Os usuários do KDE podem agendar tarefas agendadas com KCron, que é acessível a partir da Configurações de sistema gt; Agendador de tarefas módulo. Com uma interface simples que permite escolher e ajustar tudo em apenas alguns cliques do mouse, KCron é um prazer de usar.

linux-cron-jobs-kcron

Se preferir GNOME, então GNOME Cronograma é para você. A abordagem é semelhante, embora a interface é, expectedly, ligeiramente diferente. Ele oferece um modo avançado para modificações de granulação fina, e vem com um applet do painel a partir do qual você pode gerenciar tarefas diretamente.

linux-cron-jobs-gnome-horário

Você deve estar ciente de outras soluções, como Crontab-UI e Minicron. Eles são mais adequados para os usuários que gerenciam várias máquinas e tarefas agendadas, e uma de suas características mais legais é a interface baseada na web.

linux-cron-jobs-crontabui

Há algum Cron Alternativas?

Enquanto o cron é muito bonito o padrão agendador de tarefas para Linux, certamente não é o único. O comando at é perfeito para trabalhos rápidos, de uma só vez que podem ser programados desde a linha de comando, sem arquivos de configuração especial. Se precisar de mais, há GNUbatch, que introduz a noção de dependência. Com GNUbatch, você pode definir condições específicas para cada trabalho, ou fazer uma tarefa agendada dependem de uma anterior. Algo semelhante pode ser alcançado com temporizadores Systemd. Embora menos prático de configurar do que cron, temporizadores Systemd lembro se uma tarefa perdeu sua programação enquanto o computador estava desligado, e executá-lo da próxima vez que ele está ligado.Cronograma & Automatizar tarefas no Linux com o Gnome ProgramaçãoCronograma & Automatizar tarefas no Linux com o Gnome Programaçãoconsulte Mais informação

Isso é algo que cron não pode fazer sozinho. Como tal, é adequado para servidores e computadores que estão constantemente em execução, mas não vai executar um trabalho que foi programado enquanto o computador estava desligado. Este é o lugar onde anacron entra em jogo. Não é tecnicamente uma “alternativa” ou um substituto para o cron. Em vez disso, anacron complementa cron e deve ser usado juntamente com ele, que é o caso em muitas distribuições Linux, incluindo Ubuntu e produtos baseados no Ubuntu. Anacron registra quando uma tarefa foi passada executado, e verifica se houve qualquer falta casos enquanto o sistema estava desligado. Ele irá executá-los quando você liga o computador novamente, mas cada tarefa pode ser executada apenas uma vez por dia.

Algumas versões do cron, como fcron, oferecem recursos de anacron por padrão. Usuários avançados podem querer olhar para Hcron ou SuperCron, que trazem muitas melhorias para funções básicas do cron, mas também são um pouco difícil de gerir.

E se você? Como você organiza suas tarefas digitais? Quais as tarefas que você agendar no Linux? Compartilhar suas histórias e dicas para usar cron nos comentários.


Artigos relacionados