Fórum Ubuntu Linux - PT
18 de Março de 2010, 10:43 *
Olá, Visitante. Faça o login ou registre-se.
Perdeu o seu e-mail de ativação?

Login com nome de usuário, senha e duração da sessão
Notícias: Atualização no plugin de busca para Firefox e Internet Explorer.
 
   Home   Ajuda Regras Pesquisa Login Registre-se  
Anúncios
Páginas: [1]   Ir para o fundo
  Imprimir  
Autor Tópico: Tutorial: Como agendar tarefas com o "cron"  (Lida 2826 vezes)
gabriel0085
Usuário Ubuntu
*
Deslogado Deslogado

Mensagens: 579



« em: 22 de Outubro de 2007, 16:02 »


Autor da dica: Marcus Vinicius

Fonte: http://www.prosadigital.com/linux/agendar-tarefas-com-o-cron/



Agendar tarefas com o cron

Olá caros leitores!

Neste meu novo artigo, vou abordar o uso de uma ferramenta indispensável para administradores de servidores linux, e não obstante, uma ferramenta de muita valia para usuários em geral. Falarei sobre o cron.

O que é o cron?

O cron, é o agendador de tarefas do linux, que ao contrário do at, que só permite que executemos tarefas agendadas apenas uma única vez, o cron nos permite executar tarefas repetidamente, ou seja, todo dia, toda semana, ou em qualquer período pré-estabelecido.

Como usar o cron?

Para usar o cron, ou seja, agendar uma tarefa, precisamos editar o arquivo crontab. O caminho para este arquivo, na maioria das distribuições, é: /etc/crontab. Você pode agendar várias tarefas, para tanto você deve colocar um agendamento por linha.

A sintaxe de configuração para um agendamento no arquivo /etc/crontab, que é bem simples, é explicada a seguir.

(minutos) (horas) (dias do mês) (mês) (dias da semana) (usuário) (comando)

Onde:

minutos: Representa o minuto no qual o comando será executado. Aceita apenas números de 0 a 59.

horas: Representa a hora em que o comando será executado. Aceita apenas números de 0 a 23.

dias do mês: Define em que dia o comando será executado. Aceita apenas números de 0 a 31.

mês: Mês para o qual se agendou a execução do comando. Aceita apenas números de 1 a 12.

dias da semana: Define o dia da semana onde o comando será executado. Aceita apenas números de 1 a 7. Sendo 1 para segunda-feira e 7 para o domingo.

usuário: Definimos o usuário que executará o comando. Aceita apenas nomes de usuários previamente criados.

comando: Qualquer comando do sistema, scripts em geral, ou seja, qualquer arquivo que tenha permissão de execução.

Apresentados os campos, vamos aprender como trabalhar com eles de forma prática.

Vamos agendar um fictício script de backup para ser executado toda a noite às 22hs.

0 22 * * * root /root/backup.sh

Note a presença do *. Ele pode ser interpretado como todos, ou todas. Neste caso, agendamos o nosso script para ser executado às 22h e 0m de todos os dias, todos os meses, todos os dias da semana. O usuário que executará o script será o root, e por fim, definimos qual script será executado.



Vamos a um próximo exemplo.

0 0,6,12,18 * * * root /root/backup.sh

Note a presença da vírgula. Ela pode ser traduzida por e. Neste exemplo podemos ler da seguinte forma: “root, execute o script /root/backup.sh todos os dias da semana, todos os meses, todos os dias, às 0,6,12 e 18hs e 0 minutos.”



Suponhamos que você seja supersticioso e queira agendar um backup geral do sistema toda sexta-feira 13 antes da meia noite. Para o cron, isto não é problema, como mostra o próximo exemplo.

0 23 13 * 5 root /root/backupGeral.sh

No exemplo acima, o script é executado às 23hs e 0min do dia 13 de todos os meses, porém somente quando neste dia 13, o dia da semana for 5(sexta-feira) .



Para agendarmos um comando para ser executado de 5 em 5 minutos por exemplo, podemos fazer da seguinte forma:

*/5 * * * * root /root/backup.sh



O cron também aceita agendamento por intervalos. Desta forma eu posso agendar um comando para ser executado da seguinte forma:

*/5 9-18 * * * root /root/backup.sh

Na linha acima, o comando /root/backup.sh é executado a cada 5 minutos, no intervalo das 9 as 18 hs de todos os dias, todos os meses, todos os dias da semana.



Existe um outro método, que eu considero como mais apropriado, para agendar tarefas no cron. Usando o comando crontab -e, editamos as tarefas apenas para o usuário corrente.

A sintaxe é bem semelhante, com apenas uma modificação: não informamos o usuário que executará o comando, já que esta tabela já é do usuário que executou o comando crontab -e.

Vejamos a sintaxe:

(minutos) (horas) (dias do mês) (mês) (dias da semana) (comando)

O restante é tudo igual ao que já foi explicado.

Para visualizar as tarefas agendadas para o usuário, digite o comando crontab -l.

O arquivo de configuração também aceita notação de comentário. Desta forma, toda a linha do arquivo que começar com o caractere #, será ignorada, ou seja, não será executada.

Terminado este artigo espero poder ter ajudado. Lembrem-se que é bom ter essa configuração no sangue, já que o administrador de sistema está sempre precisando dela.

Um grande abraço,

Paz e bem!
« Última modificação: 23 de Outubro de 2007, 10:13 por gabriel0085 » Registrado
Alex Souza
Usuário Ubuntu
*
Deslogado Deslogado

Mensagens: 22


« Responder #1 em: 30 de Dezembro de 2007, 22:46 »

Gabriel,

Estou precisando usar o agendamento para conectar e desconectar (Dial Up), mas pelo que vi o Cron não programa uma mesma tarefa para ser executada semanalmente como o agendador de tarefas do Windows.

Existe alguma maneira de fazer isso?
Registrado
leandromdelima
Usuário Ubuntu
*
Deslogado Deslogado

Mensagens: 268

My fate to live and die in the shadows.


« Responder #2 em: 07 de Janeiro de 2008, 18:07 »

Como assim não programa semanal?  Acho que vc não percebeu pois nosso amigo gabriel esqueceu de colocar em negrito:


A sintaxe de configuração para um agendamento no arquivo /etc/crontab, que é bem simples, é explicada a seguir.

(minutos) (horas) (dias do mês) (mês) (dias da semana) (usuário) (comando)

Onde:

minutos: Representa o minuto no qual o comando será executado. Aceita apenas números de 0 a 59.

horas: Representa a hora em que o comando será executado. Aceita apenas números de 0 a 23.

dias do mês: Define em que dia o comando será executado. Aceita apenas números de 0 a 31.

mês: Mês para o qual se agendou a execução do comando. Aceita apenas números de 1 a 12.

dias da semana: Define o dia da semana onde o comando será executado. Aceita apenas números de 1 a 7. Sendo 1 para segunda-feira e 7 para o domingo.

usuário: Definimos o usuário que executará o comando. Aceita apenas nomes de usuários previamente criados.

comando: Qualquer comando do sistema, scripts em geral, ou seja, qualquer arquivo que tenha permissão de execução.

Registrado

Sempre me lamentei por não ter um rolex de ouro, até o dia que encontrei um homem que não tinha braços.  Dei dois tiros nele e ainda hoje me lamento por não ter um rolex de ouro.
Alex Souza
Usuário Ubuntu
*
Deslogado Deslogado

Mensagens: 22


« Responder #3 em: 07 de Janeiro de 2008, 21:23 »

leandromdelima,

Eu reaperei nessas partes, sim. Mas eu queria programar a conexão/desconexão para se repetir "eternamente" durante os dias da semana que eu escolhesse. Ou você acha que eu iria fazer o agendamente todo o mês?

Ex: Conectar de 00:00 de segunda à sexta-feta. Queria apenas programar algo desse tipo e que se repetisse em todas as semanas de todos os meses, e não apenas no mês que eu especificasse. (parte da sintaxe: (dias do mês) (mês))

Até mais.
Registrado
alexmatos
Usuário Ubuntu
*
Deslogado Deslogado

Mensagens: 792

Arch Linux / Ubuntu 7.04


« Responder #4 em: 07 de Janeiro de 2008, 23:50 »

leandromdelima,

Eu reaperei nessas partes, sim. Mas eu queria programar a conexão/desconexão para se repetir "eternamente" durante os dias da semana que eu escolhesse. Ou você acha que eu iria fazer o agendamente todo o mês?

Ex: Conectar de 00:00 de segunda à sexta-feta. Queria apenas programar algo desse tipo e que se repetisse em todas as semanas de todos os meses, e não apenas no mês que eu especificasse. (parte da sintaxe: (dias do mês) (mês))

Até mais.

Pra isso você teria que usar o *. Acho que o comando ficaria assim:

Código:
# Conectar
0 0 * * * root comando-para-conectar

# Desconectar
0 6 * * * root comando-para-desconectar

Isso se você quisesse conectar às 00:00 e desconectar às 06:00.
Registrado
Alex Souza
Usuário Ubuntu
*
Deslogado Deslogado

Mensagens: 22


« Responder #5 em: 08 de Janeiro de 2008, 06:30 »

Tem razão, meu amigo, eu que não havia prestado atenção nessa parte, e também não tinha entendido algumas partes da sintaxe. Mas hoje encontrei um tópico em outro fórum que explica como agendar a conexão/desconexão com o crontab.

Mais tarde eu irei fazer um tutorial explicando de maneira mais simples e posto lá na seção iniciantes.

Até mais. Obrigado.
« Última modificação: 08 de Janeiro de 2008, 06:52 por Anny Rose » Registrado
Páginas: [1]   Ir para o topo
  Imprimir  
 
Ir para:  

Powered by MySQL Powered by PHP Tema desenvolvido por FaBMak e n3t0
Powered by SMF 1.1.11 | SMF © 2006-2009, Simple Machines LLC
© 2010 Canonical Ltd. Ubuntu e Canonical são marcas registradas da Canonical Ltd.
XHTML 1.0 válido! CSS válido!