10
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 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) Automação Tarefas 1

automacao_tarefas

Embed Size (px)

Citation preview

Tarefas automatizadas

O serviço atdO daemon(serviço) atd é um serviço do Linux / Unix localizado no diretório /etc/init.d/, e tem a função deexecutar 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 agendadoAs 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 osusuá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, quecontém os usuários que não poderão executar o comando at. Mas se caso nenhum deles existir, somenteo usuário root poderá executar o comando at.

at (opções) (hora) (mês dia ano)

Automação Tarefas

1

-V Exibe a versão do comando-l Exibe a fila de trabalhos do at (mesmo que atq)-m Avisa por email sobre o comando executado-f scriptExecuta comandos de um script-d Remove a fila de trabalhos do at (mesmo que atrm)

hora Especifica o horário no formato: h(horas):m(minutos), hh:mm ou hhmm, pode ser usadonoon, midnight e now

mêsEspecifica a data no formato em inglês: (jan(janeiro), feb(fevereiro),mar(março), apr(abril), may(maio), jun(junho),jul(julho), ago(agosto), sep(setembro),

oct(outubro), nov(novembro) e dec(dezembro), pode-se usar também today e tomorrow.Exemplos:

$ at 21:25 apr warning: commands will be executed using /bin/shat> touch /tmp/arquivo APERTE ENTERat> <EOT>APERTE CTRL + Djob 1 at Tue apr 8 21:25:00 2008

$ at -l (exibe a tarefa)

1 Thu Apr 10 21:25:00 2008 a aluno1

$ at -d 1 (apaga a tarefa com o número 1)

atq - exibe a fila de tarefas agendadas do comando at

Exemplos:

$ atq1 Thu Apr 10 21:25:00 2008 a aluno1

atrm - remove a fila de tarefas agendadas do comando at

Automação Tarefas

2

atrm (fila de trabalho)Exemplos:

$ atrm 1 (remove a fila com o número 1)

batch - executa comandos quando o nível de carga do sistema permitir

Em outras palavras, quando a carga média do sistema estiver abaixo de 1.5 (verificando a saída de top nocampo load average), ou um valor especificado pela invocação do atd.

Exemplos:

$ cd /home/aluno1$ cat > comandostouch /tmp/teste1echo 1 > /tmp/teste1APERTE ENTERAPERTE CTRL + D$ chmod +x comandos$ batchwarning: commands will be executed using /bin/shat> /home/aluno1/comandos APERTE ENTERat> <EOT>APERTE CTRL + Djob 15 at Tue Jan 8 22:57:00 2008

Após algum tempo execute o comando top, e quando o sistema permitir será criado o arquivo teste1 em/tmp.

$ top$ ls /tmpteste1

Inicialização do daemon atd

Automação Tarefas

3

Debian e Ubuntu

# /etc/init.d/atd start

Red Hat , Fedora, 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.d/, e tem a função deexecutar tarefas automáticas com comandos e programas em datas e horários programados e possue oseguinte arquivo e diretório de configuração.

/etc/crontab - é onde são armazenados os comandos ou programas a serem executados• /var/spool/cron/ - armazena os arquivos de crontab dos usuários.•

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 permitidosMinutos: Números de 0 a 59Horas: Números de 0 a 23Dias do mês: Números de 1 a 31Mês: Números de 1 a 12 Dias da semana: Números de 0 a 7 - de domingo (0) a sábado (7)Usuário: Pode ser root ou um usuário do sistemaComando: Comando ou script a ser executadoObs: Um asterisco (*) indica que pode ser usado qualquer valor indicado em qualquer campo. Porexemplo, se for usado no campo "dias da semana", o script será executado em todos os dias da semanade domingo (0) a sábado (7) 0 a 7.

Automação Tarefas

4

Abaixo segue um exemplo do arquivo /etc/crontab, adicionando uma nova linha no arquivo /etc/crontab,não é necessário executar o comando crontab para criar uma nova crontab.

#/etc/crontabSHELL=/bin/shPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user command17 * * * * root cd / && run-parts --report /etc/cron.hourly25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

Essas entradas em /etc/crontab, diz ao daemon /etc/init.d/cron executar o programa run-partse /usr/sbin/anacron em datas e horários programados. Esses programas executa scripts, comandos eprogramas especificados nos diretórios a abaixo:

Diretório Descrição/etc/cron.hourly Será executado toda hora/etc/cron.dail Será executado todo dia/etc/cron.weekly Será executado uma vez por semana/etc/cron.monthly Será executado uma vez por mês

55 23 * 1-12 1-5 root /root/scriptEssa linha de contab executa o script /root/script como superusuário root, de segunda a sexta (1-5),entre o mês de janeiro a dezembro (1-12), todos os dias do mês, às 23:55.

crontab

O comando crontab é utilizado para gerenciar criando, editando e removendo arquivos de contab parausuários individualmente localizados em /var/spool/cron automaticamente em data e horáriosprogramados.

As permissões para executar o comando crontab são feitas pelos arquivos /etc/cron.allowe /etc/cron.deny.

Caso exista o arquivo /etc/cron.allow, o superusuário root deverá ser especificado e então o

Automação Tarefas

5

comando crontab só poderá ser executado pelos usuários especificados no arquivo e se /etc/cron.allowestiver vazio todos os usuários poderão executar o comando crontab.

Caso o arquivo /etc/cron.allow não exista, então será verificado a existência do arquivo /etc/cron.deny,que contém os usuários que não poderão executar o comando crontab. Mas se caso nenhum delesexistir, somente o usuário root poderá executar o comando crontab.

crontab (opções) arquivo

Opção Significado-u (usuário) Especifica o nome de usuário que será usado pelo arquivo contab-l Mostra o arquivo de crontab do usuário corrente-r Remove o arquivo de crontab do usuário corrente-e Edita o arquivo de crontab do usuário corrente

arquivo 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/bashecho "criando um script"touch /tmp/arquivo$ chmod +x script

Criando uma crontab

Ao usar a opção -e do comando crontab, será aberto o editor padrão do sistema, podendo ser os editoresvi ou nano para editar e salvar o arquivo.

$ crontab -e# m h dom mon dow command15 8 1-31 1-12 0-7 aluno1 /home/aluno1/script

ou crie um arquivo de crontab

Automação Tarefas

6

$ cd /home/aluno1$ cat > arquivo_crontab15 8 1-31 1-12 0-7 aluno1 /home/aluno1/scriptAPERTE ENTERAPERTE CTRL + D

$ crontab arquivo_crontab

$ crontab -l15 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 dosistema, rotacionando(onde são criados novos arquivos de logs), compactando diminuindo o tamanho doarquivo de log, removendo e enviando por email os arquivos de log.

O p r o g r a m a l o g r o t a t e é e x e c u t a d o t o d o s o s d i a s p e l o d a e m o n c r o n d a t r a v é s d oarquivo /etc/cron.daily/logrotate , e possue os seguintes arquivos e diretórios:

/etc/logrotate.conf - arquivo de configuração global.• /etc/logrotate.d- diretório onde são armazenados os scripts de logrotate de arquivos de logindividuais de cada programa.

/etc/cron.daily/logrotate - arquivo de configuração para o daemon crond executar diariamente oscripts de logrotate

Exemplo do arquivo /etc/logrotate.conf

# /etc/logrotate.conf

# rotaciona os arquivos de log uma vez por semanaweekly

# rotaciona os arquivos de log 3 vezesrotate 3

Automação Tarefas

7

# cria novos arquivos de log vazios após rotacionar os logs antigoscreate

# descomente essa linha se você quer comprimir seus arquivos de log #compress

# diretório dos scripts de logrotateinclude /etc/logrotate.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, sendo usado um contador no final do nome dearquivo de log e caso o contador tenha um 0 ou a palavra old(versão antiga), o arquivo será removidoantes de rotacionar. Esse processo de rotacionamento é útil quando um arquivo de log atingir tamanhosacima de 20 MB.

Abaixo segue um exemplo de rotacionamento e compactação de logs no diretório do daemon syslog em/var/log. O funcionamento do rotacionamento funciona da seguinte forma:

Na primeira vez o arquivo syslog é rotacionado e renomeado para syslog.1.gz e será criado umnovo arquivo syslog vazio.

1.

Na segunda vez o arquivo syslog é rotacionado o arquivo syslog.1.gz é renomeadopara syslog.2.gz e o arquivo syslog é renomeado para syslog.1.gz e será criado um novoarquivo syslog vazio.

2.

Na terceira vez o arquivo syslog é rotacionado o arquivo syslog.2.gz é renomeadopara syslog.3.gz, o arquivo syslog.1.gz é renomeado para syslog.2.gz, o arquivo syslog érenomeado para syslog.1.gz e será criado um novo arquivo syslog vazio.

3.

Na última vez o arquivo syslog.3.gz é apagado, e o arquivo syslog.2.gz é renomeadopara syslog.3.gz, o arquivo syslog.1.gz é renomeado para syslog.2.gz, o arquivo syslog érenomeado para syslog.1.gz e será criado um novo arquivo syslog vazio.

4.

Automação Tarefas

8

# ls -lh /var/log/-rw-r----- 1 root adm 29K 2008-01-09 11:17 syslog-rw-r----- 1 root adm 181K 2008-01-09 06:39 syslog.0-rw-r----- 1 root adm 29K 2008-01-08 07:19 syslog.1.gz-rw-r----- 1 root adm 18K 2008-01-07 06:56 syslog.2.gz-rw-r----- 1 root adm 16K 2008-01-06 06:55 syslog.3.gz

Você poderá usar o comando logrotate com a opção -f para "forçar" a rotação de logs e a opção -dinforma mais detalhes os processos do logrotate.

# logrotate -d -f /etc/logrotate.conf

# logrotate -d -f /etc/logrotate.d/apache2

# ls /var/log# ls /var/log/apache2-rw-r----- 1 root adm 0 2008-01-09 12:24 access.log-rw-r----- 1 root adm 159K 2008-01-08 21:12 access.log.1-rw-r----- 1 root adm 3,6K 2008-01-04 13:55 access.log.2.gz-rw-r----- 1 root adm 117 2008-01-09 12:24 error.log-rw-r----- 1 root adm 761 2008-01-09 12:24 error.log.1.gz-rw-r----- 1 root adm 831 2008-01-06 06:56 error.log.2.gz

Logrotate pode ser configurado globalmente no arquivo /etc/logrotate.conf, ou especificandoindividualmente em um arquivo em /etc/logrotate.d/ como mostra o exemplo abaixo retirado do comandoman logrotate, onde rotaciona os arquivos logs /var/log/syslog 3 vezes, semanalmente e envia um sinalatravés do comando /usr/bin/killall -HUP syslogd, suspendendo o processo do daemon syslogd:

Exemplo de configuração de arquivo logrotate individual:

# /etc/logrotate.d/syslog /var/log/syslog { rotate 3 weekly postrotate /usr/bin/killall -HUP syslogd endscript }

# logrotate -d -f /etc/logrotate.d/syslog

Automação Tarefas

9

Inicialização do daemon crond

Debian e Ubuntu

# /etc/init.d/cron start

Red Hat , Fedora, Mandriva e OpenSuse

# /sbin/service crond start

Slackware

# /usr/sbin/crond

Automação Tarefas

10