Você está na página 1de 10

Automao Tarefas

Tarefas automatizadas

O servio atd
O daemon(servio) atd um servio do Linux / Unix localizado no diretrio /etc/init.d/, e tem a funo de executar um lista de tarefas em um determinado horrio, e possue os seguintes diretrios:

/var/spool/cron/atjobs - armazena a lista de tarefas /var/spool/cron/atspool - armazena a sada de execuo 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 horrio agendado


As permisses para executar o comando at so feitas pelos arquivos /etc/at.allow e /etc/at.deny. Caso exista o arquivo /etc/at.allow, o superusurio root dever ser especificado e ento o comando at s poder ser executado pelos usurios especificados no arquivo e se /etc/at.allow estiver vazio todos os usurios podero executar o comando at. Caso o arquivo /etc/at.allow no exista, ento ser verificado a existncia do arquivo /etc/at.deny, que contm os usurios que no podero executar o comando at. Mas se caso nenhum deles existir, somente o usurio root poder executar o comando at.

at

(opes)

(hora)

(ms dia ano)

Automao Tarefas

Exibe a verso 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 ms

Especifica o horrio no formato: h(horas):m(minutos), hh:mm ou hhmm, pode ser usado noon, midnight e now Especifica a data no formato em ingls: (jan(janeiro), feb(fevereiro), mar(maro), apr(abril), may(maio), jun(junho),jul(julho), ago(agosto), sep(setembro),

oct(outubro), nov(novembro) e dec(dezembro), pode-se usar tambm today e tomorrow. 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 nmero 1)

atq - exibe a fila de tarefas agendadas do comando at


Exemplos:

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

atrm - remove a fila de tarefas agendadas do comando at

Automao Tarefas

atrm (fila de trabalho) Exemplos:

$ atrm 1 (remove a fila com o nmero 1)

batch - executa comandos quando o nvel de carga do sistema permitir


Em outras palavras, quando a carga mdia do sistema estiver abaixo de 1.5 (verificando a sada de top no campo load average), ou um valor especificado pela invocao do atd.

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 Aps algum tempo execute o comando top, e quando o sistema permitir ser criado o arquivo teste1 em /tmp. $ top $ ls /tmp teste1

Inicializao do daemon atd

Automao Tarefas

Debian e Ubuntu # /etc/init.d/atd start Red Hat , Fedora, Mandriva e OpenSuse # /sbin/service atd start Slackware # /usr/sbin/atrun

O servio crond

O daemon(servio) cron um servio do sistema localizado no diretrio /etc/init.d/, e tem a funo de executar tarefas automticas com comandos e programas em datas e horrios programados e possue o seguinte arquivo e diretrio de configurao. /etc/crontab - onde so armazenados os comandos ou programas a serem executados /var/spool/cron/ - armazena os arquivos de crontab dos usurios. A sintaxe do arquivo /etc/crontab possui o seguinte formato:
(minutos) (horas) (dias do ms) (ms) (dias da semana) (usurio) (comando)

O preenchimento de cada campo feito da seguinte maneira: Campo Valores permitidos Minutos: Nmeros de 0 a 59 Horas: Nmeros de 0 a 23 Dias do ms: Nmeros de 1 a 31 Ms: Nmeros de 1 a 12 Dias da semana: Nmeros de 0 a 7 - de domingo (0) a sbado (7) Usurio: Pode ser root ou um usurio do sistema Comando: Comando ou script a ser executado Obs: Um asterisco (*) indica que pode ser usado qualquer valor indicado em qualquer campo. Por exemplo, se for usado no campo "dias da semana", o script ser executado em todos os dias da semana de domingo (0) a sbado (7) 0 a 7.

Automao Tarefas

Abaixo segue um exemplo do arquivo /etc/crontab, adicionando uma nova linha no arquivo /etc/crontab, no necessrio executar o comando crontab para criar uma nova crontab. #/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.hourly 25 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-parts e /usr/sbin/anacron em datas e horrios programados. Esses programas executa scripts, comandos e programas especificados nos diretrios a abaixo:

Diretrio /etc/cron.hourly /etc/cron.dail /etc/cron.weekly /etc/cron.monthly

Descrio Ser executado toda hora Ser executado todo dia Ser executado uma vez por semana Ser executado uma vez por ms

55 23 * 1-12 1-5 root /root/script Essa linha de contab executa o script /root/script como superusurio root, de segunda a sexta (1-5), entre o ms de janeiro a dezembro (1-12), todos os dias do ms, s 23:55.

crontab
O comando crontab utilizado para gerenciar criando, editando e removendo arquivos de contab para usurios individualmente localizados em /var/spool/cron automaticamente em data e horrios programados.

As permisses para executar o comando crontab so feitas pelos arquivos /etc/cron.allow e /etc/cron.deny. Caso exista o arquivo /etc/cron.allow , o superusurio root dever ser especificado e ento o

Automao Tarefas

comando crontab s poder ser executado pelos usurios especificados no arquivo e se /etc/cron.allow estiver vazio todos os usurios podero executar o comando crontab. Caso o arquivo /etc/cron.allow no exista, ento ser verificado a existncia do arquivo /etc/cron.deny, que contm os usurios que no podero executar o comando crontab. Mas se caso nenhum deles existir, somente o usurio root poder executar o comando crontab.

crontab

(opes)

arquivo

Opo -u (usurio) -l -r -e arquivo

Significado Especifica o nome de usurio que ser usado pelo arquivo contab Mostra o arquivo de crontab do usurio corrente Remove o arquivo de crontab do usurio corrente Edita o arquivo de crontab do usurio 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 opo -e do comando crontab, ser aberto o editor padro do sistema, podendo ser os editores vi ou nano para editar e salvar o arquivo.

$ 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

Automao 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, rotacionando(onde so criados novos arquivos de logs), compactando diminuindo o tamanho do arquivo de log, removendo e enviando por email os arquivos de log. O programa logrotate executado todos os dias pelo daemon crond atravs do arquivo /etc/cron.daily/logrotate , e possue os seguintes arquivos e diretrios: /etc/logrotate.conf - arquivo de configurao global. /etc/logrotate.d - diretrio onde so armazenados os scripts de logrotate de arquivos de log individuais de cada programa. /etc/cron.daily/logrotate - arquivo de configurao para o daemon crond executar diariamente o scripts de logrotate Exemplo do arquivo /etc/logrotate.conf # /etc/logrotate.conf # rotaciona os arquivos de log uma vez por semana weekly # rotaciona os arquivos de log 3 vezes rotate 3

Automao Tarefas

# cria novos arquivos de log vazios aps rotacionar os logs antigos create # descomente essa linha se voc quer comprimir seus arquivos de log #compress # diretrio dos scripts de logrotate include /etc/logrotate.d # os arquivos /var/log/wtmp e /var/log/btmp no sero 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 configuraes de log globais A rotao feita de acordo com o tamanho dos logs, sendo usado um contador no final do nome de arquivo de log e caso o contador tenha um 0 ou a palavra old(verso antiga), o arquivo ser removido antes de rotacionar. Esse processo de rotacionamento til quando um arquivo de log atingir tamanhos acima de 20 MB. Abaixo segue um exemplo de rotacionamento e compactao de logs no diretrio do daemon syslog em /var/log. O funcionamento do rotacionamento funciona da seguinte forma: 1. Na primeira vez o arquivo syslog rotacionado e renomeado para syslog.1.gz e ser criado um novo arquivo syslog vazio. 2. Na segunda vez o arquivo syslog rotacionado o arquivo syslog.1.gz renomeado para syslog.2.gz e o arquivo syslog renomeado para syslog.1.gz e ser criado um novo arquivo syslog vazio. 3. Na terceira vez o arquivo syslog rotacionado o arquivo syslog.2.gz renomeado para 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. Na ltima vez o arquivo syslog.3.gz apagado, e o arquivo syslog.2.gz renomeado para 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.

Automao Tarefas

# ls -lh /var/log/ -rw-r----- 1 root -rw-r----- 1 root -rw-r----- 1 root -rw-r----- 1 root -rw-r----- 1 root

adm adm adm adm adm

29K 2008-01-09 11:17 syslog 181K 2008-01-09 06:39 syslog.0 29K 2008-01-08 07:19 syslog.1.gz 18K 2008-01-07 06:56 syslog.2.gz 16K 2008-01-06 06:55 syslog.3.gz

Voc poder usar o comando logrotate com a opo -f para "forar" a rotao de logs e a opo -d informa 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 especificando individualmente em um arquivo em /etc/logrotate.d/ como mostra o exemplo abaixo retirado do comando man logrotate, onde rotaciona os arquivos logs /var/log/syslog 3 vezes, semanalmente e envia um sinal atravs do comando /usr/bin/killall -HUP syslogd, suspendendo o processo do daemon syslogd:

Exemplo de configurao 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

Automao Tarefas

Inicializao 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

10

Você também pode gostar