Atualizado: 24/10/2024

Planejando Processos - Linux

Alguns processos podem ser iniciados automaticamente em intervalos de tempo específicos. Para configurar esses processos no Linux, usa-se uma ferramenta chamada cron. O núcleo dessa ferramenta é o processo crond, que é automaticamente iniciado no Linux e verifica sua configuração a cada minuto para ver se há alguma tarefa a ser executada. Por padrão, o cron lê seu principal arquivo de configuração, o /etc/crontab.

O arquivo /etc/crontab gerencia todas as tarefas que devem ser agendadas via cron. Vamos examinar o conteúdo deste arquivo:

programicio@Programicio:~$ cat /etc/crontab
# /etc/crontab: crontab do sistema
# Diferente de outros crontabs, você não precisa executar o comando `crontab`
# para instalar a nova versão ao editar este arquivo
# e os arquivos em /etc/cron.d. Esses arquivos também possuem campos de nome de usuário,
# que nenhum outro crontab possui.

SHELL=/bin/sh
# Você também pode sobrescrever o PATH, mas por padrão, as versões mais recentes o herdam do ambiente
#PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# Exemplo de definição de tarefa:
# .---------------- minuto (0 - 59)
# |  .------------- hora (0 - 23)
# |  |  .---------- dia do mês (1 - 31)
# |  |  |  .------- mês (1 - 12) OU jan, feb, mar, apr ...
# |  |  |  |  .---- dia da semana (0 - 6) (Domingo=0 ou 7) OU sun, mon, tue, wed, thu, fri, sat
# |  |  |  |  |
# *  *  *  *  * nome-do-usuário comando a ser executado
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; }
#

Em todas as configurações do crontab, você pode encontrar três elementos diferentes. Primeiro, é possível ver a indicação do tempo em que o comando deve ser executado. Para especificar o tempo de execução de uma tarefa cron, você pode usar 5 componentes:

  • Minutos

  • Horas

  • Dia do mês

  • Mês

  • Dia da semana

Em seguida, vem o nome do usuário com as permissões necessárias para executar a tarefa, e a última parte é o nome do comando a ser executado.

Por exemplo, vejamos a última linha:

52 6    1 * *   root   test -x /usr/sbin/anacron || { cd / && run-parts --report /etc/cron.monthly; }

Nesse caso, a tarefa test -x ... é executada como o usuário root no dia 1 de qualquer mês às 6:52.

É importante notar que não é recomendável alterar este arquivo diretamente. Alterações feitas no /etc/crontab funcionarão, mas você pode perdê-las, pois este arquivo pode ser sobrescrito durante atualizações de pacotes. Além do crontab do sistema, os usuários individuais também podem ter seu próprio crontab. Geralmente, esta é a forma padrão de alterar a lista de tarefas agendadas. Para isso, você deve usar o comando crontab. Por exemplo, vamos inserir o seguinte comando:

crontab -e

Se o usuário atual não tiver criado tarefas antes, uma mensagem correspondente será exibida:

programicio@Programicio:~$ crontab -e
no crontab for programicio - using an empty one

Select an editor. To change later, run 'select-editor'.
    1. /bin/nano        >---- mais fácil
    2. /usr/bin/vim.tiny
    3. /bin/ed

Choose 1-3 [1]: 

Escolha o editor de texto preferido. Como resultado, uma janela do editor será aberta, onde você pode definir tarefas para execução automática via cron:

40 17 * * 1-5 ps aux > ~/Documents/proclog

Aqui, a tarefa ps aux > ~/Documents/proclog será executada às 17:40. Os números 1-5 como dia da semana indicam que o cron deve executar essa tarefa apenas de segunda a sexta-feira.

Se precisar remover uma tarefa, você pode abrir o arquivo e excluir ou comentar a linha correspondente. Da mesma forma, você pode abrir o arquivo para adicionar novas tarefas ou modificar as existentes.

Outra forma de agendar tarefas via cron é criar arquivos no diretório /etc/cron.d. Todos os arquivos neste diretório serão incluídos na execução do cron. Usar essa abordagem oferece uma alternativa para fazer alterações no arquivo /etc/crontab. A vantagem é que as alterações não serão perdidas durante as atualizações de software. O conteúdo dos arquivos em /etc/cron.d é exatamente o mesmo que o das linhas adicionadas ao /etc/crontab.

O cron também utiliza quatro diretórios diferentes para executar tarefas em intervalos regulares. Esses diretórios são /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly e /etc/cron.monthly. Você pode colocar scripts nesses diretórios para que sejam executados nos intervalos de tempo especificados. O conteúdo desses scripts é o código de scripts bash, e eles não contêm indicadores de tempo específicos do cron.

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com