Automação Tarefas

Tarefas automatizadas

O serviço atd
O daemon(serviço) atd é um serviço do Linux / Unix localizado no diretório /etc/init.d/, e tem a função de executar um lista de tarefas em um determinado horário, e possue os seguintes diretórios:

/var/spool/cron/atjobs - armazena a lista de tarefas /var/spool/cron/atspool - armazena a saída de execução da lista de tarefas.

/var/spool/at /var/spool/at/spool/

/var/spool/at /var/spool/at/spool/

/var/spool/at/spool/

at - executa tarefas com horário agendado
As permissões para executar o comando at são feitas pelos arquivos /etc/at.allow e /etc/at.deny. Caso exista o arquivo /etc/at.allow, o superusuário root deverá ser especificado e então o comando at só poderá ser executado pelos usuários especificados no arquivo e se /etc/at.allow estiver vazio todos os usuários poderão executar o comando at. Caso o arquivo /etc/at.allow não exista, então será verificado a existência do arquivo /etc/at.deny, que contém os usuários que não poderão executar o comando at. Mas se caso nenhum deles existir, somente o usuário root poderá executar o comando at.

at

(opções)

(hora)

(mês dia ano)

1

Automação Tarefas Exibe a versão do comando -V Exibe a fila de trabalhos do at (mesmo que atq) -l Avisa por email sobre o comando executado -m -f script Executa comandos de um script Remove a fila de trabalhos do at (mesmo que atrm) -d hora mês Especifica o horário no formato: h(horas):m(minutos). may(maio). Exemplos: $ at 21:25 apr warning: commands will be executed using /bin/sh at> touch /tmp/arquivo APERTE ENTER at> <EOT>APERTE CTRL + D job 1 at Tue apr 8 21:25:00 2008 $ at -l 1 (exibe a tarefa) Thu Apr 10 21:25:00 2008 a aluno1 $ at -d 1 (apaga a tarefa com o número 1) atq . pode ser usado noon. midnight e now Especifica a data no formato em inglês: (jan(janeiro). ago(agosto). jun(junho). oct(outubro). hh:mm ou hhmm. sep(setembro). mar(março). apr(abril).remove a fila de tarefas agendadas do comando at 2 . pode-se usar também today e tomorrow. nov(novembro) e dec(dezembro).jul(julho).exibe a fila de tarefas agendadas do comando at Exemplos: $ atq 1 Thu Apr 10 21:25:00 2008 a aluno1 atrm . feb(fevereiro).

ou um valor especificado pela invocação do atd. e quando o sistema permitir será criado o arquivo teste1 em /tmp.5 (verificando a saída de top no campo load average). Exemplos: $ cd /home/aluno1 $ cat > comandos touch /tmp/teste1 echo 1 > /tmp/teste1 APERTE ENTER APERTE CTRL + D $ chmod +x comandos $ batch warning: commands will be executed using /bin/sh at> /home/aluno1/comandos APERTE ENTER at> <EOT>APERTE CTRL + D job 15 at Tue Jan 8 22:57:00 2008 Após algum tempo execute o comando top.Automação Tarefas atrm (fila de trabalho) Exemplos: $ atrm 1 (remove a fila com o número 1) batch . $ top $ ls /tmp teste1 Inicialização do daemon atd 3 . quando a carga média do sistema estiver abaixo de 1.executa comandos quando o nível de carga do sistema permitir Em outras palavras.

4 .d/. • /etc/crontab . Mandriva e OpenSuse # /sbin/service atd start Slackware # /usr/sbin/atrun O serviço crond O daemon(serviço) cron é um serviço do sistema localizado no diretório /etc/init.Automação Tarefas Debian e Ubuntu # /etc/init.armazena os arquivos de crontab dos usuários. o script será executado em todos os dias da semana de domingo (0) a sábado (7) 0 a 7. e tem a função de executar tarefas automáticas com comandos e programas em datas e horários programados e possue o seguinte arquivo e diretório de configuração. Por exemplo.é onde são armazenados os comandos ou programas a serem executados • /var/spool/cron/ . Fedora.de domingo (0) a sábado (7) Usuário: Pode ser root ou um usuário do sistema Comando: Comando ou script a ser executado Obs: Um asterisco (*) indica que pode ser usado qualquer valor indicado em qualquer campo. A sintaxe do arquivo /etc/crontab possui o seguinte formato: (minutos) (horas) (dias do mês) (mês) (dias da semana) (usuário) (comando) O preenchimento de cada campo é feito da seguinte maneira: Campo Valores permitidos Minutos: Números de 0 a 59 Horas: Números de 0 a 23 Dias do mês: Números de 1 a 31 Mês: Números de 1 a 12 Dias da semana: Números de 0 a 7 .d/atd start Red Hat . se for usado no campo "dias da semana".

daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.dail /etc/cron.monthly Descrição Será executado toda hora Será executado todo dia Será executado uma vez por semana Será executado uma vez por mês 55 23 * 1-12 1-5 root /root/script Essa linha de contab executa o script /root/script como superusuário root.allow . editando e removendo arquivos de contab para usuários individualmente localizados em /var/spool/cron automaticamente em data e horários programados.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron. todos os dias do mês.monthly ) Essas entradas em /etc/crontab.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron. o superusuário root deverá ser especificado e então o 5 .allow e /etc/cron. entre o mês de janeiro a dezembro (1-12). crontab O comando crontab é utilizado para gerenciar criando. As permissões para executar o comando crontab são feitas pelos arquivos /etc/cron. #/etc/crontab SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command 17 * * * * root cd / && run-parts --report /etc/cron.d/cron executar o programa run-parts e /usr/sbin/anacron em datas e horários programados. Caso exista o arquivo /etc/cron. adicionando uma nova linha no arquivo /etc/crontab. de segunda a sexta (1-5). diz ao daemon /etc/init.hourly /etc/cron. comandos e programas especificados nos diretórios a abaixo: Diretório /etc/cron.weekly /etc/cron. Esses programas executa scripts.deny. às 23:55. não é necessário executar o comando crontab para criar uma nova crontab.Automação Tarefas Abaixo segue um exemplo do arquivo /etc/crontab.

crontab (opções) arquivo Opção -u (usuário) -l -r -e arquivo Significado Especifica o nome de usuário que será usado pelo arquivo contab Mostra o arquivo de crontab do usuário corrente Remove o arquivo de crontab do usuário corrente Edita o arquivo de crontab do usuário corrente Especifica o arquivo de crontab a ser usado no mesmo formato do arquivo /etc/crontab Exemplos: Criando um script $ cd /home/aluno1 $ cat > script #!/bin/bash echo "criando um script" touch /tmp/arquivo $ chmod +x script Criando uma crontab Ao usar a opção -e do comando crontab. podendo ser os editores vi ou nano para editar e salvar o arquivo.allow não exista. então será verificado a existência do arquivo /etc/cron.deny. somente o usuário root poderá executar o comando crontab. será aberto o editor padrão do sistema. Caso o arquivo /etc/cron.allow estiver vazio todos os usuários poderão executar o comando crontab. Mas se caso nenhum deles existir.Automação Tarefas comando crontab só poderá ser executado pelos usuários especificados no arquivo e se /etc/cron. que contém os usuários que não poderão executar o comando crontab. $ crontab -e # m h dom mon dow command 15 8 1-31 1-12 0-7 aluno1 /home/aluno1/script ou crie um arquivo de crontab 6 .

diretório onde são armazenados os scripts de logrotate de arquivos de log individuais de cada programa. compactando diminuindo o tamanho do arquivo de log. e possue os seguintes arquivos e diretórios: • /etc/logrotate. removendo e enviando por email os arquivos de log.conf .arquivo de configuração para o daemon crond executar diariamente o scripts de logrotate Exemplo do arquivo /etc/logrotate.conf # /etc/logrotate. O programa logrotate é executado todos os dias pelo daemon crond através do arquivo /etc/cron.conf # rotaciona os arquivos de log uma vez por semana weekly # rotaciona os arquivos de log 3 vezes rotate 3 7 . • /etc/logrotate.d .arquivo de configuração global. rotacionando(onde são criados novos arquivos de logs). • /etc/cron.daily/logrotate .Automação Tarefas $ cd /home/aluno1 $ cat > arquivo_crontab 15 8 1-31 1-12 0-7 APERTE ENTER APERTE CTRL + D aluno1 /home/aluno1/script $ crontab arquivo_crontab $ crontab -l 15 8 1-31 1-12 0-7 aluno1 /home/aluno1/script $ crontab -r logrotate Logrotate é programa utilizado para gerenciar o crescimento do tamanho dos arquivos de log do sistema.daily/logrotate .

2. o arquivo será removido antes de rotacionar. Na primeira vez o arquivo syslog é rotacionado e renomeado para syslog. o arquivo syslog é renomeado para syslog.3.gz.2. 2.gz.1.gz é apagado. o arquivo syslog. Esse processo de rotacionamento é útil quando um arquivo de log atingir tamanhos acima de 20 MB. sendo usado um contador no final do nome de arquivo de log e caso o contador tenha um 0 ou a palavra old(versão antiga). 8 .gz é renomeado para syslog.Automação Tarefas # cria novos arquivos de log vazios após rotacionar os logs antigos create # descomente essa linha se você quer comprimir seus arquivos de log #compress # diretório dos scripts de logrotate include /etc/logrotate.1. o arquivo syslog é renomeado para syslog.gz e será criado um novo arquivo syslog vazio. 3.3.gz e o arquivo syslog é renomeado para syslog.3.d # os arquivos /var/log/wtmp e /var/log/btmp não serão rotacionados aqui /var/log/wtmp { missingok monthly create 0664 root utmp rotate 1 } /var/log/btmp { missingok monthly create 0664 root utmp rotate 1 } # aqui você pode especificar outras configurações de log globais A rotação é feita de acordo com o tamanho dos logs.gz é renomeado para syslog.2.gz é renomeado para syslog. e o arquivo syslog. o arquivo syslog.gz.gz e será criado um novo arquivo syslog vazio.1. O funcionamento do rotacionamento funciona da seguinte forma: 1.1.gz é renomeado para syslog.1. Abaixo segue um exemplo de rotacionamento e compactação de logs no diretório do daemon syslog em /var/log.2.gz e será criado um novo arquivo syslog vazio.gz. 4. Na segunda vez o arquivo syslog é rotacionado o arquivo syslog.gz e será criado um novo arquivo syslog vazio.1.gz é renomeado para syslog. Na terceira vez o arquivo syslog é rotacionado o arquivo syslog.1.2. Na última vez o arquivo syslog.

gz -rw-r----.1 root adm 761 2008-01-09 12:24 error.log.gz 18K 2008-01-07 06:56 syslog.1 root -rw-r----.1 -rw-r----.gz Você poderá usar o comando logrotate com a opção -f para "forçar" a rotação de logs e a opção -d informa mais detalhes os processos do logrotate.1 root adm 159K 2008-01-08 21:12 access.log.d/syslog 9 .3. onde rotaciona os arquivos logs /var/log/syslog 3 vezes. semanalmente e envia um sinal através do comando /usr/bin/killall -HUP syslogd.gz 16K 2008-01-06 06:55 syslog.1 root -rw-r----.2.log -rw-r----.Automação Tarefas # ls -lh /var/log/ -rw-r----.0 29K 2008-01-08 07:19 syslog.1 root -rw-r----.1 root adm 3.log -rw-r----. suspendendo o processo do daemon syslogd: Exemplo de configuração de arquivo logrotate individual: # /etc/logrotate.gz Logrotate pode ser configurado globalmente no arquivo /etc/logrotate.conf # logrotate -d -f /etc/logrotate.2. # logrotate -d -f /etc/logrotate. ou especificando individualmente em um arquivo em /etc/logrotate.1 root adm adm adm adm adm 29K 2008-01-09 11:17 syslog 181K 2008-01-09 06:39 syslog.d/apache2 # ls /var/log # ls /var/log/apache2 -rw-r----.log.1 root adm 117 2008-01-09 12:24 error.log.d/ como mostra o exemplo abaixo retirado do comando man logrotate.1 root adm 0 2008-01-09 12:24 access.6K 2008-01-04 13:55 access.1 root adm 831 2008-01-06 06:56 error.d/syslog /var/log/syslog { rotate 3 weekly postrotate /usr/bin/killall -HUP syslogd endscript } # logrotate -d -f /etc/logrotate.1.2.1 root -rw-r----.gz -rw-r----.conf.1.

Mandriva e OpenSuse # /sbin/service crond start Slackware # /usr/sbin/crond 10 .Automação Tarefas Inicialização do daemon crond Debian e Ubuntu # /etc/init.d/cron start Red Hat . Fedora.