crontab [opções]
Descrição
Este comando agenda tarefas a serem executadas pelo sistema periodicamente (mais de uma vez).
Algumas opções do comando
- -e : edita o arquivo de crontab.
- -l : lista o arquivo crontab na saída padrão.
- -r : remove o arquivo crontab do usuário.
- -u usuário : especifica o nome do usuário cujo arquivo de crontab está sendo criado ou alterado.
Comentários sobre as opções do comando
- Se o usuário não tiver ainda agendado qualquer tarefa (primeira vez), ao digitar
crontab -e
receberá como resposta:
no crontab for aluno – using an empty one
Select an editor. To change later, run ‘select-editor’.
1. /bin/ed
2. /bin/nano
3. /usr/bin/vim.tiny
Choose 1-3 [2]:
O usuário então deverá escolher um dos editores de texto disponíveis no sistema. Neste caso, ele deve digitar 1 para abrir o ed, 2 para o nano ou 3 para o vim. Caso o usuário não forneça a opção, será usada a segunda (nano), pois este é o padrão do sistema. Em seguida, ele poderá definir no arquivo criado as tarefas a serem executadas pelo sistema. Ao fechar o editor de texto, o usuário receberá a mensagem abaixo.
crontab: installing new crontab
- É possível criar um arquivo com as tarefas antes de executar o crontab. No exemplo abaixo, o arquivo teste possui as tarefas a serem agendadas.
crontab teste
Se o arquivo fornecido tiver qualquer erro, o sistema informa o problema e não agenda as tarefas. Abaixo, temos um exemplo onde houve um erro na especificação do dia da semana.
“teste”:1: bad day-of-week
errors in crontab file, can’t install.
- É também possível criar ou alterar o o arquivo crontab de outro usuário com a opção -u.
sudo crontab -u aluno -e
No exemplo acima, o arquivo crontab do usuário aluno é editado. Note que, neste caso, é preciso ter autorização de root para acessar o arquivo crontab de outro usuário.
Formato dos comandos do arquivo crontab
- Cada linha do arquivo crontab possui:
- hora e data – definidas por cinco campos;
- nome do usuário – apenas se o dono do arquivo crontab for o sistema;
- tarefa – o comando a ser executado.
- A data e a hora são definidas usando a tabela abaixo. O uso do caractere “*” em algum dos campos é interpretado por “intervalo completo”. Isto significa que, se o campo dia do mês for um “*”, então a tarefa será executada todos os dias do mês especificado.
Campo | Valores permitidos |
minuto | 0-59 |
hora | 0-23 |
dia do mês | 1-31 |
mês | 1-12 |
dia da semana | 0-7 |
- É possível definir um intervalo de números para a hora e a data. Por exemplo, 1-4 no campo dia do mês significa que a tarefa será executada nos quatro primeiros dias do mês. Além disso, pode-se também usar uma lista de números como 1, 4, 5-7.
- O caractere “/” define o valor de intervalo entre os números especificados na hora e/ou na data. Por exemplo, 0-23/2 no campo hora corresponde às seguintes horas: 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 e 22.
- Caso o caractere “*” seja seguido pelo “/” e um número, então este número representa o intervalo entre os números do intervalo completo. Por exemplo, */2 no campo hora significa a cada duas horas.
- Os valores 0 e 7 no campo dia da semana corresponde ao dia de domingo. O valor 1 corresponde a segunda-feira. O valor 2 corresponde a terça-feira, e assim por diante.
Exemplos
- Abaixo temos um arquivo crontab de um usuário onde está agendado o comando ls para ser executado todos os domingos (0) no horário das 12:15.
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use ‘*’ in these fields (for ‘any’).
#
# Notice that tasks will be started based on the cron’s system
# daemon’s notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
15 12 * * 0 ls
- Executa o comando ls à 4 horas do segundo sábado de cada mês.
0 4 8-14 * 6 ls
- Executa todo dia o comando ls à meia-noite e 23 minutos, às 2:23, às 4:23, …, às 22:23.
23 0-23/2 * * * ls
Observações
- O cron é o servidor que executa os comandos agendados. O cron ler os arquivos crontab armazenados no diretório /var/spool/cron/crontabs a cada minuto para verificar as tarefas agendadas nestes arquivos.
- Os arquivos crontab dos usuários são nomeados com o mesmo nome de login do usuário. Por exemplo, o arquivo /var/spool/cron/crontabs/aluno é o arquivo crontab do usuário aluno.
- As tarefas agendadas pelo sistema são armazenadas em /etc/crontab.
- Se algum problema ou erro ocorre na executação da tarefa, o cron tenta enviar um email para o administrador da máquina. Para que o email seja enviado para outro usuário, basta definir/alterar a variável de ambiente MAILTO. Naturalmente que, para o email ser enviado, o sistema precisa ter um servidor de emails funcionando.
- Para obter mais informações sobre os comandos de crontab, digite
man 5 crontab
- O comando at agenda tarefas a serem executadas pelo sistema uma única vez.