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