Introdução ao crontab
Criando um novo cron no Ubuntu (ou na maioria dos outros sistemas operacionais linux)
Você pode criar uma nova entrada cron simplesmente digitando
crontab -e
na linha de comando. Se for a primeira vez que você deseja editar seu crontab(le), você será solicitado com uma seleção de editor:
no crontab for <user> - using an empty one
Select an editor. To change later, run 'select-editor'.
1. /bin/ed
2. /bin/nano <---- easiest
3. /usr/bin/vim.basic
4. /usr/bin/vim.tiny
Choose 1-4 [2]:
Basta escolher seu editor seguindo o prompt, e seu crontab será aberto com um arquivo vazio (contendo apenas algumas linhas comentadas de explicação):
# 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
Como você pode ver, já existe uma entrada de exemplo no texto:
0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
Isso criaria um arquivo de backup chamado home.tgz
dentro de /var/backups/
. O momento para este crontab seria
every monday (first day of week) at 5:00 A.M.
Se você tivesse digitado essa linha como seu crontab, tudo que você teria que fazer agora seria salvar o crontabfile. Por exemplo, com o editor nano
, isso é feito com <Ctrl> + <X>
- então confirme para salvar com Y
.
Para verificar seu crontab, basta digitar
crontab -l
na consola.
Mais algumas informações sobre crontimings que você pode escolher:
# * * * * * command to execute
# │ │ │ │ │
# │ │ │ │ │
# │ │ │ │ └───── day of week (0 - 6) (0 to 6 are Sunday to Saturday, or use names; 7 is Sunday, the same as 0)
# │ │ │ └────────── month (1 - 12)
# │ │ └─────────────── day of month (1 - 31)
# │ └──────────────────── hour (0 - 23)
# └───────────────────────── min (0 - 59)
Caracteres especiais em cronjobs são:
Asterisco ( *
)
O asterisco indica que a expressão cron corresponde a todos os valores do campo. Por exemplo, usar um asterisco no 4º campo (mês) indica todos os meses.
Barra (/
)
As barras descrevem incrementos de intervalos. Por exemplo, 3-59/15 no 1º campo (minutos) indica o terceiro minuto da hora e a cada 15 minutos depois disso. A forma “*/…” é equivalente à forma “primeiro-último/…”, ou seja, um incremento sobre o maior intervalo possível do campo.
Vírgula (,
)
Vírgulas são usadas para separar itens de uma lista. Por exemplo, usar “MON,WED,FRI” no 5º campo (dia da semana) significa segundas, quartas e sextas-feiras.
Hífen (-
)
Os hífens definem os intervalos. Por exemplo, 2000-2010 indica todos os anos entre 2000 e 2010 AD, inclusive.
Porcentagem (%
)
Os sinais de porcentagem (%) no comando, a menos que sejam escapados com barra invertida (), são alterados para caracteres de nova linha e todos os dados após o primeiro % são enviados ao comando como entrada padrão.
Instale o crontab no Linux
Debian/Gratuito
# apt-get update & apt-get -y upgrade
# apt-get install cron
Fedora/CentOS
# yum -y update
# yum install vixie-cron
Arco
# pacman --noconfirm -Syu
# pacman -S cronie