agendador de tarefas alternativa elegante - linuxmag.com.br · e garanta a sua vaga entre os...

3
57 | TUTORIAL Alternativa elegante Linux Magazine #100 | Março de 2013 Agendador de tarefas Alternativa elegante Tarefas no estilo cron jobs são essenciais para a gestão de sistemas Linux e Unix. No entanto, sua sintaxe é muito limitada e sujeita a erros. Um moderno substituto visa eliminar essas fraquezas. por Oliver Frommel U ma das muitas heranças do Unix (desde o Unix V7, para sermos mais exatos) é o serviço de agendamento de tarefas cron, que ainda hoje executa trabalhos regulares no Linux e sistemas BSD. Embora al- gumas alternativas para esta ferramenta já tenham sido desenvolvidas, como o fcron [1] e o anacron [2], o princípio em si sofreu poucas alterações. Richard W.M. Jones, programador da Red Hat, acabou rompendo com a tradição e chegou a uma alternativa nova – um projeto chamado When- jobs. Basicamente, o Whenjobs [3] oferece duas vantagens para o cron: sintaxe mais simples para definir as tarefas e tempos de execução, e um sistema que permite aos usuários de- finir as dependências entre as tarefas. Pacotes Whenjobs pré-compilados já estão disponíveis para o Fedora 17, mas usuários de outras distribuições terão que construir a ferramenta eles mesmos. Para instalar, basta acessar o Whenjobs do repositório Git. No entanto, é mais fácil baixar o último arquivo tar, se o usuário não quiser entrar em uma batalha com o autoconf e o automake. Como o Whenjobs é escrito na linguagem de programação funcio- nal Ocaml, precisaremos do com- pilador correspondente e de alguns pacotes. Podemos instalá-los com os seguintes comandos, por exemplo, no Ubuntu 12.10: sudo apt-get install ocaml ocaml- findlib libcalendar-ocaml libcalendar- ocaml-dev camlp4-extra libocamlnet-ocaml-bin O comando ./configure inicia a etapa de configuração, que informa se todos os pacotes necessários estão instalados. Durante o teste, vimos o seguinte erro quando executamos make: error: Un- bound value XDR.safe_add. Resolvemos isso excluindo os arquivos gerados lib/ whenproto_aux.ml e lib/whenproto_aux. mli. Executar o comando make instala o Whenjobs globalmente no sistema. Ajuda para iniciar Quando iniciado com a opção -- help, o Whenjobs gera uma cur- ta mensagem de ajuda, listando TUTORIAL Figura 1 Quando iniciado com o parâmetro --help, o Whenjobs exibe os parâme- tros de comando disponíveis. A ajuda está disponível na man page.

Upload: lycong

Post on 04-Dec-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Agendador de tarefas Alternativa elegante - linuxmag.com.br · e garanta a sua vaga entre os especialistas Linux mais procurados do mercado! Conteúdo do kit: 1 livro contendo o guia

57

| TUTORIALAlternativa elegante

Linux Magazine #100 | Março de 2013

Agendador de tarefas

Alternativa eleganteTarefas no estilo cron jobs são essenciais para a gestão de sistemas Linux e Unix. No entanto, sua sintaxe é muito limitada e sujeita a erros. Um moderno substituto visa eliminar essas fraquezas.por Oliver Frommel

Uma das muitas heranças do Unix (desde o Unix V7, para sermos mais exatos) é o serviço

de agendamento de tarefas cron, que ainda hoje executa trabalhos regulares no Linux e sistemas BSD. Embora al-gumas alternativas para esta ferramenta já tenham sido desenvolvidas, como o fcron [1] e o anacron [2], o princípio em si sofreu poucas alterações.

Richard W.M. Jones, programador da Red Hat, acabou rompendo com

a tradição e chegou a uma alternativa nova – um projeto chamado When-jobs. Basicamente, o Whenjobs [3] oferece duas vantagens para o cron: sintaxe mais simples para definir as tarefas e tempos de execução, e um sistema que permite aos usuários de-finir as dependências entre as tarefas.

Pacotes Whenjobs pré-compilados já estão disponíveis para o Fedora 17, mas usuários de outras distribuições terão que construir a ferramenta eles

mesmos. Para instalar, basta acessar o Whenjobs do repositório Git.

No entanto, é mais fácil baixar o último arquivo tar, se o usuário não quiser entrar em uma batalha com o autoconf e o automake.

Como o Whenjobs é escrito na linguagem de programação funcio-nal Ocaml, precisaremos do com-pilador correspondente e de alguns pacotes. Podemos instalá-los com os seguintes comandos, por exemplo, no Ubuntu 12.10:

sudo apt-get install ocaml ocaml- findlib

libcalendar-ocaml libcalendar-ocaml-dev

camlp4-extra libocamlnet-ocaml-bin

O comando ./configure inicia a etapa de configuração, que informa se todos os pacotes necessários estão instalados. Durante o teste, vimos o seguinte erro quando executamos make: error: Un-bound value XDR.safe_add. Resolvemos isso excluindo os arquivos gerados lib/whenproto_aux.ml e lib/whenproto_aux.mli. Executar o comando make instala o Whenjobs globalmente no sistema.

Ajuda para iniciarQuando iniciado com a opção --help, o Whenjobs gera uma cur-ta mensagem de ajuda, listando

TU

TO

RIA

L

Figura 1 Quando iniciado com o parâmetro --help, o Whenjobs exibe os parâme-tros de comando disponíveis. A ajuda está disponível na man page.

Page 2: Agendador de tarefas Alternativa elegante - linuxmag.com.br · e garanta a sua vaga entre os especialistas Linux mais procurados do mercado! Conteúdo do kit: 1 livro contendo o guia

58 www.linuxmagazine.com.br

TUTORIAL | Alternativa elegante

opções e parâmetros disponíveis (figura 1). O comando whenjobs -e informa ao programa que deve iniciar um editor, que vem com um arquivo Whenjobs, embora contenha apenas um comentário (figura 2). O editor mostrado na figura, ilustra que este deve ser o arquivo .$HOME/whenjobs/jobs.ml.

No caso de erros de sintaxe no arqui-vo de tarefas, o Whenjobs não é muito útil; na verdade, ele simplesmente envia uma mensagem de erro ao compilador, embora ainda salve o arquivo mesmo com erros. Ao invés de um arquivo, também podemos armazenar vários arquivos com a extensão .ml em .when-jobs; no entanto, precisaremos editá-los manualmente. Além disso, os nomes de arquivo têm de obedecer a regras da linguagem Ocaml; por exemplo, eles não podem conter hífens.

Os princípios básicos dos arquivos Whenjobs são explicados nos trechos de comentário. Os comentários ini-ciam e terminam com um asterisco (*) – esta é uma dica sutil de que os próprios arquivos Whenjobs são ar-quivos Ocaml – no entanto, normal-mente não precisamos nos preocupar com a linguagem de programação

quando utilizamos o Whenjobs. Uma medida de tempo começa com cada palavra-chave e termina com dois pontos, por exemplo:

every 10 minutes:

Os caracteres << apresentam um blo-co de comandos Shell, que são então encerrados pelos caracteres >>.

VariáveisO exemplo no comentário da figura 2 ilustra alguns recursos do When-jobs, como a definição de variáveis. Para fazer isso, a ferramenta oferece a opção --set, que podemos esten-der, indicando o tipo de variável (-type). O código a seguir, executa primeiro o comando stat e atribui os resultados à variável Shell livre. A segunda linha lê esta variável e a atribui à variável free_space do Whenjobs como um inteiro; este último estará então disponível para outras tarefas.

free=`stat -f -c %b /home` whenjobs --set --type int free_space=$free

O segmento de código inferior na figura 1 mostra como executar

novas tarefas com o Whenjobs, de-pendendo de certas condições. A sintaxe para isso é:

when <condition> : <jobcode>

Por exemplo, a função de alteração no Whenjobs permite que o usuário monitore quando uma variável muda. Usando as variáveis acima, podemos formular, assim, uma condição como “se free_space mudar e se o valor for inferior a 10.000 (blocos)”: when changes free_space&& free_space< 100000 :

Para que isso funcione, o dae-mon do Whenjobs (whenjobsd) deve estar em execução; ele armazena as variáveis e executa as tarefas. Ele pode ser iniciado usando a interface do Whenjobs e a opção --daemon-start. Alternativamente, também podemos iniciar o when-jobsd diretamente; e então, usar a opção -f para evitar que o daemon execute em segundo plano, e a opção -d para ativar as mensagens de depuração. O comando whenjobs --variables informa a ferramenta para obter a lista de variáveis arma-zenadas atualmente.

Se não quiser uma alteração em uma variável para desencadear uma mudança de evento, também podemos definir a opção --whisper:whenjobs --set free_space=0 --whisper

O Whenjobs mostra quais tarefas estão ativas quando estipulamos o parâmetro --jobs e quais são carre-gadas quando usamos o parâmetro --jobs-names. Podemos definir o nome acrescentando-o antes da linha que começa com um when ou every:

job "disk monitoring" every 15 minutes :

Podemos executar tarefas indi-viduais manualmente digitando whenjobs --start jobname. Tarefas

Figura 2 Quando iniciamos o Whenjobs pela primeira vez, ele vem com uma tarefa de exemplo que exibe um breve texto de ajuda.

Page 3: Agendador de tarefas Alternativa elegante - linuxmag.com.br · e garanta a sua vaga entre os especialistas Linux mais procurados do mercado! Conteúdo do kit: 1 livro contendo o guia

59

| TUTORIALAlternativa elegante

Linux Magazine #100 | Março de 2013

ativas podem ser canceladas com whenjobs --cancel <number> e di-gitar whenjobs --tail <number> irá mostrar a saída de uma tarefa ativa.

Prova do milênioQuando se trata de definir horá-

rios para tarefas agendadas, a fer-ramenta oferece uma vasta gama de opções: segundo, minuto, hora, dia, semana, mês, ano e até mesmo década, século e milênio. Estas op-ções podem ser todas combinadas com um número: por exemplo, cada hora executa um script uma vez por hora, e cada 15 minutos exe-cuta um script a cada 15 minutos.

O Whenjobs também oferece uma riqueza de expressões: elas podem estar ligadas por operadores (&&) e/ou (| |) e também negadas. Comparações de duas expressões com várias combinações de maior que, menor que e igual podem ser numéricas ou baseadas em compa-rações de strings.

Outras funções internas podem com-parar variáveis com valores anteriores ou determinar se um valor aumentou ou diminuiu. Além disso, os usuários podem programar expressões próprias na linguagem Ocaml. Mais informações sobre isso estão disponíveis em detalhes no manual fornecido pela ferramenta.

MaduroO Whenjobs foi desenvolvido como um projeto particular de Jones e como um substituto para o cron. Oferece sintaxe mais sim-ples e suporta dependências entre tarefas. Em um post, Jones indi-ca expressamente que este é um projeto privado e não é planejado como um substituto para o siste-ma cron padrão usado pelo Fedora ou pela Red Hat. No entanto, ele não usa a tarefa para compilações automatizadas de ferramentas de virtualização da Red Hat, demons-trando assim sua capacidade para uso em produção. n

Mais informações[1] “Fcron” de Matija Suklje, Linux Magazine, Janeiro de 2010, pág. 48.

[2] Anacron: http://anacron.sourceforge.net

[3] Whenjobs: http://people.redhat.com/~rjones/whenjobs/

Gostou do artigo?Queremos ouvir sua opinião. Fale conosco em [email protected]

Este artigo no nosso site: http://lnm.com.br/article/8313

A certi�cação LPI cada vez mais próxima de você!

Kit de certi�cação LPI-1 Kit de certi�cação LPI-2

Adquira já o seu kit de certi�cação LPI, faça o curso intensivo e as provas no �sl14 e garanta a sua vaga entre os especialistas Linux mais procurados do mercado!

Conteúdo do kit:1 livro contendo o guia de estudos para a certi�cação LPI-1 ou 2Curso preparatório intensivo2 provas para certi�cação LPI-1 ou LPI-2: Exames 101/102 ou Exames 201/202 Por R

$650,00

ou 6x de R$108,33

sem ju

ros

Para aquisição e mais informações:https://www.linuxnewmedia.com.br/lm/certi�cacao_�sl14