cron
é o daemon responsável por executar comandos agendados e recorrentes (todo dia, toda hora, toda semana, etc.); atd
lida com comandos a serem executados uma única vez, mas em um momento específico no futuro.
locate
;
crontab -e
(seu conteúdo é armazenado no arquivo /var/spool/cron/crontabs/usuário
).
/etc/crontab
, ou escrever arquivos crontab adicionais no diretório /etc/cron.d
. Essas duas últimas soluções têm a vantagem de ser capaz de especificar a identidade do(a) usuário(a) a usar quando o comando for executado.
crontab
descreve um comando agendado com os seguintes seis (ou sete) campos:
Sun
, Mon
, etc.);
/etc/crontab
e nos fragmentos localizados em /etc/cron.d/
, mas não nos arquivos crontab do(a) próprio(a) usuário(a));
a-b
descreve o intervalo de todos os valores entre a
e b
. A sintaxe a-b/c
descreve o intervalo com um incremento de c
(exemplo: 0-10/2
significa 0,2,4,6,8,10
). Um asterisco *
é um coringa, representando todos os valores possíveis.
Exemplo 9.2. Exemplo de arquivo crontab
de usuário(a)
#Formato #min hora dia mês dia-da-semana comando # Baixa dados toda noite às 19:25 25 19 * * * $HOME/bin/get.pl # 8:00 da manhã, nos dias de semana (Segunda a Sexta) 00 08 * * 1-5 $HOME/bin/dosomething # a cada duas horas * */2 * * * $HOME/bin/dosomethingelse # Reiniciar o proxy IRC após cada reinicio @reboot /usr/bin/dircproxy
at
executa um comando em um momento específico no futuro. Ele recebe o horário e data desejados como parâmetros de linha de comando, e o comando a ser executado em sua saída padrão. O comando será executado como se tivesse sido digitado no shell corrente. at
até toma o cuidado de reter o ambiente corrente, para poder reproduzir as mesmas condições quando executa o comando. O horário é indicado pelas seguintes convenções usuais: 16:12
ou 4:12pm
representa 4:12 da tarde. A data pode ser especificada em vários formatos europeus e ocidentais, incluindo DD.MM.YY
(27.07.22
assim representando 27 de julho de 2022), YYYY-MM-DD
(essa mesma data sendo expressa como 2022-07-27
), MM/DD/[CC]YY
(isto é, 12/25/22
ou 12/25/2022
será 25 de dezembro de 2022), ou simplesmente MMDD[CC]YY
(logo 122522
ou 12252022
irá, do mesmo modo, representar 25 de Dezembro de 2022). Sem isso, o comando será executado assim que o relógio alcançar o horário indicado (no mesmo dia, ou amanhã se o horário já tiver passado no mesmo dia). Você também pode simplesmente escrever “today” (hoje) ou “tomorrow” (amanhã), o que é auto-explicativo.
$
at 09:00 27.07.22 <<END
>
echo "Não se esqueça de desejar feliz aniversário para Raphaël!" \
>
| mail lolando@debian.org
>
END
Aviso: comandos serão executados utilizando/bin/sh job 1 at Wed Jul 27 09:00:00 2022
at now + número período
. O período pode ser minutos
, horas
, dias
, ou semanas
. O número apenas indica o número de unidades ditas que tem que ocorrer antes da execução do comando.
cron
, apenas rode crontab -e
e apague a linha correspondente no arquivo crontab. Para tarefas do at
, também é fácil: rode atrm número-da-tarefa
. O número da tarefa é indicado pelo comando at
no momento em que você vez o agendamento, mas você pode obter ele novamente com o comando atq
, o qual retorna a lista corrente de tarefas agendadas.