Anda di halaman 1dari 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)

1
Automao Tarefas

-V Exibe a verso do comando


-l Exibe a fila de trabalhos do at (mesmo que atq)
-m Avisa por email sobre o comando executado
-f script Executa comandos de um script
-d Remove a fila de trabalhos do at (mesmo que atrm)
Especifica o horrio no formato: h(horas):m(minutos), hh:mm ou hhmm, pode ser usado
hora 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),
ms
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 (exibe a tarefa)

1 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

2
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

3
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.

4
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 Descrio
/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 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

5
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 Significado
-u (usurio) Especifica o nome de usurio que ser usado pelo arquivo contab
-l Mostra o arquivo de crontab do usurio corrente
-r Remove o arquivo de crontab do usurio corrente
-e Edita o arquivo de crontab do usurio corrente
Especifica o arquivo de crontab a ser usado no mesmo formato do arquivo
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

6
Automao Tarefas

$ cd /home/aluno1
$ cat > arquivo_crontab
15 8 1-31 1-12 0-7 aluno1 /home/aluno1/script
APERTE ENTER
APERTE CTRL + D

$ 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

7
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.

8
Automao Tarefas

# 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 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

9
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