Ir para o conteúdo

Crontab

De RJGSWiki

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.

Fonte[editar]