Crontab
Crontab[editar]
O que é?[editar]
O Cron é utilizado para agendar tarefas recorrentes, as tarefas são chamadas de cronjobs e são gerenciadas pelo crontab (tabela do cron).
Instalação[editar]
Geralmente ele já vem instalado por padrão na maioria das distribuições Linux, mas caso o seu não tenha vindo, pode instalar ele com o comando abaixo:
CentOS/RHEL 7/8/5
yum install cronie
Ubuntu
apt-get install cron -y
Após a intalação será criado o arquivo /etc/crontab.
ele terá um conteúdo parecido com esse:
# /etc/crontab: system-wide crontab # Unlike any other crontab you don't have to run the `crontab' # command to install the new version when you edit this file # and files in /etc/cron.d. These files also have username fields, # that none of the other crontabs do. SHELL=/bin/sh # You can also override PATH, but by default, newer versions inherit it from the environment #PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed 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 )
Configuração e uso[editar]
Para criar uma nova tarefa usamos o comando crontab -e
que irá abrir o arquivo do cron para inserir o agendamento para o usuário atual. Podemos também editar o agendamento de um usuário passando o parâmetro -u
e o nome do usuário em seguida. Assim como o exemplo:
crontab -e crontab -u usuario -e
Outra possibilidade com o comando crontab é listar os agendamentos. Para isso, usamos o parâmetro -l.
crontab -l crontab -u usuario -l
As tabelas do cron de um usuário ficam armazenadas no diretório /var/spool/cron/crontabs/
, os agendamentos globais ficam armazenados no arquivo /etc/crontab
.
O crontab possui sete colunas, que correspondem aos minutos, horas, dias, meses, semanas, usuário e, por fim, aos comandos que serão executados.
E quais são os valores permitidos para cada coluna?
- Minuto: Valores de 0 a 59 ou *
- Hora: Valores de 0 a 23 ou *
- Dia: Valores de 1 a 31 ou *
- Mês: Valores de 1 a 12, jan a dec ou *
- Semana: 0 a 6, sun a sat ou * (0 e 7 representa Domingo)
- Comando: O comando a ser executado ou script
Algumas observações importantes:
- caso deseje utilizar o mês e semana através dos seus respectivos nomes, deve respeitar a ortografia da língua inglesa.
- O caractere asterisco (*) significa do primeiro ao último.
- Para executar um script, é recomendado que seja informado o caminho absoluto do script e não o caminho relativo sem esquecer de prover as permissões suficientes para a execução do script.
- Para interpretar a instrução do crontab a leitura deve começar da direita para a esquerda.
- É possível especificar uma sequência alternada de valores, separando-os com vírgula ",".
- Também é possível declarar um período de tempo, utilizando o hífen "-".
- Para declarar intervalos intercalados utilizamos o hífen (-) para declarar o período e uma barra "/" para declarar o intervalo de intercalamento. Exemplo: 8-18/2 quer dizer que efetuará o job do dia 8 ao dia 18 intercalando de 2 em 2 dias.