Neste tutorial, forneceremos a introdução básica de tudo que você precisa entender para agendar uma tarefa com o cron. Isso inclui a sintaxe básica do cron, edição do arquivo crontab, agendamento de um trabalho com o cron com alguns exemplos, visualização do cron job, etc.
Noções básicas de Cron Job
Vamos entender alguns princípios básicos de um cron job.
O que é Crond?
Crond é o daemon no sistema Linux que roda em segundo plano e verifica a cada minuto para ver se há algum trabalho agendado naquele momento. Se houver, ele executa esse trabalho, senão permanece inativo.
Sintaxe do Cron Job
A sintaxe do cron job é a seguinte:
* * * * * comando / scriptDa esquerda:
- O primeiro * corresponde a Minutos (0-59)
- O segundo * corresponde a Horas (0-23)
- O terceiro * corresponde ao Dia do mês (1-31)
- O quarto * corresponde ao mês do ano (1-12)
- O quinto * corresponde ao Dia da semana (0-6, domingo a sábado)
Para especificar vários valores em um campo, use os seguintes símbolos de operador:
- Asterisco (*): Para especificar todos os valores possíveis para um campo
- Traço (-): Para sespecifique uma gama de valores
- A vírgula (,): Para especificar uma lista de valores
- Separador (/): Para especificar um valor de etapa
Editando Arquivo Crontab
Crontab é um arquivo que contém as tarefas agendadas em uma sintaxe específica. Existem dois tipos de arquivos crontab; um para cron jobs específicos do sistema e o outro para cron jobs específicos do usuário.
Cron jobs do sistema
Os cron jobs de todo o sistema estão localizados no / etc / crontab arquivo e / etc / cron.d diretório, e eles são executados por meio de / etc / cron.de hora em hora, / etc / cron.diariamente, / etc / cron.semanalmente e / etc / cron.por mês. Apenas um administrador do sistema pode acessar esses arquivos.
Um administrador de sistema pode definir um cron job usando o seguinte comando:
$ nano / etc / crontabAqui está a sintaxe do trabalho no / etc / crontab Arquivo:
# min hr dayofmonth month dayofweek username command* * * * * user1 ifconfig
Tarefas cron específicas do usuário
Os cron jobs específicos do usuário estão localizados no /var / spool / cron / crontabs diretório. Embora você possa editar esses trabalhos manualmente, é recomendado editá-los usando o comando crontab -e.
Um usuário padrão pode definir um cron job usando o seguinte comando:
$ crontab -ePor exemplo, se você estiver logado como um usuário de “teste”, executar o comando crontab -e editará o arquivo crontab para o usuário de “teste”. Da mesma forma, se você estiver logado como usuário root, o comando crontab -e irá editar o arquivo crontab para o usuário root.
Emita o comando abaixo no Terminal para editar o arquivo crontab para qualquer outro usuário:
$ sudo crontab -uPor exemplo, se você estiver conectado como um usuário “test1” e quiser editar o arquivo crontab para o usuário “test2”, o comando seria:
$ sudo crontab -u test2 -eEsta é a sintaxe do cron job que pode ser adicionado ao arquivo crontab:
# m h dayofmonth month dayofweek command* * * * * ifconfig
Você pode ver em trabalhos específicos do usuário que não há nenhum "nome de usuário" arquivado.
Comandos Crontab
O comando crontab é usado para editar, listar e remover os cron jobs:
- crontab -e Para editar o arquivo crontab do usuário atual
- crontab -l Para exibir o conteúdo do arquivo crontab
- crontab -u [nome de usuário] Para editar o arquivo crontab de qualquer outro usuário
- crontab -r Para remover o arquivo crontab do usuário atual
- crontab -i Para exibir um prompt antes de remover o arquivo crontab do usuário atual
Agendando uma tarefa com o Cron
Com o Cron, você pode executar um trabalho em uma hora, data e intervalos específicos com uma unidade mínima em minutos, i.e., você pode executar um trabalho a cada minuto.
Para agendar um trabalho com cron, abra o arquivo crontab usando o método discutido na seção anterior. Depois de abrir o arquivo crontab, você será solicitado a selecionar um editor de texto. Digite um número para escolher seu editor de texto preferido. Role para baixo até a parte inferior do arquivo e adicione tarefas na sintaxe descrita acima. Cada linha em um arquivo especifica um comando. As primeiras cinco entradas na linha especificam a hora agendada e a última entrada especifica qual comando ou script deve ser executado.
Exemplo:
A seguinte linha no arquivo crontab irá agendar o cron job para executar o comando / script a cada 30 minutos após 5 horas em todos os dias da semana de segunda a sábado.
* / 30 5 * * 1-6 comando / script
Minutos
Neste campo, especificamos os minutos em que queremos que o comando seja executado. É especificado de 0 a 59. O * neste campo significa executar o trabalho a cada minuto. Na linha crontab acima, o * / 30 diz ao cron job para executar o comando / script especificado a cada 30 minutos.
Horas
Neste campo, especificamos as horas em que queremos que o comando seja executado. É especificado de 0 a 23. O * neste campo significa executar o trabalho a cada hora. Na linha crontab acima, o valor 5 diz ao cron job para executar o comando / script especificado a cada cinco horas.
Dia do mês
Neste campo, especificamos os dias específicos dos meses em que queremos que o comando seja executado. É especificado de 1 a 31. O * neste campo significa todos os dias. Na linha crontab acima, o * diz ao cron job para executar o comando / script especificado todos os dias.
Mês do ano
Neste campo, especificamos os meses específicos em que queremos que o comando seja executado. É especificado de 1 a 12. O * neste campo significa todos os meses. Na linha crontab acima, o * diz ao cron job para executar o comando / script especificado todos os meses.
Dia da semana
Neste campo, especificamos os dias da semana em que queremos que o comando seja executado. É especificado de 0 a 6 de domingo a sábado (0 para domingo e 6 para sábado). O * neste campo significa todos os dias da semana. Na linha do crontab acima, o * diz ao cron job para executar o comando / script especificado todos os dias da semana.
Exemplos de Cron Jobs
Aqui estão alguns exemplos de cron jobs:
Execute um cron job a cada 15 minutos
Para agendar um cron job para ser executado a cada 15 minutos, adicione a linha abaixo no arquivo crontab:
* / 15 * * * * comando / scriptExecute um cron job às 5 da manhã todos os dias
Para agendar um cron job para ser executado às 5h todos os dias, adicione a linha abaixo no arquivo crontab:
0 5 * * * comando / scriptExecute um cron job às 17h todos os dias
Para agendar um cron job para ser executado às 17h todos os dias, adicione a linha abaixo no arquivo crontab:
0 17 * * * comando / scriptExecute um cron job às 9h do primeiro dia de cada mês
Para agendar um cron job para ser executado às 9h do primeiro dia de cada mês, adicione a linha abaixo no arquivo crontab:
0 9 1 * * comando / scriptExecute um cron job a cada hora a cada 15 de março
Para agendar um cron job a cada hora a cada 15 de março, adicione a linha abaixo no arquivo crontab:
0 * 15 3 * comando / scriptExecute um cron job a cada 5 horas
Para agendar um cron job a cada 5 horas, adicione a linha abaixo no arquivo crontab:
0 * / 5 * * * comando / scriptExecute um cron job a cada 15 minutos
Para agendar um cron job para ser executado a cada 15 minutos, adicione a linha abaixo no arquivo crontab:
* / 15 * * * *Usando Strings
As seguintes strings também podem ser usadas para definir um trabalho:
- @hourly: Para executar um trabalho uma vez a cada hora, eu.e., “0 * * * *“
- @meia-noite: Para executar um trabalho uma vez por dia, eu.e., “0 0 * * *“
- @diariamente: mesmo que meia-noite
- @semanalmente: Para executar um trabalho uma vez por semana, eu.e., “0 0 * * 0“
- @por mês: Para executar um trabalho uma vez por mês, eu.e., “0 0 1 * *“
- @anualmente: Para executar um trabalho uma vez por ano, eu.e., “0 0 1 1 *“
- @anual: o mesmo que @anualmente
- @reinício: Para executar um trabalho uma vez a cada inicialização
Por exemplo, para executar um script ou comando toda semana, a entrada no arquivo crontab seria:
comando / script @weeklyDiretórios Cron Predefinidos
Existem alguns diretórios cron predefinidos no Linux onde os scripts armazenados são executados automaticamente. Se colocarmos qualquer script nesses diretórios, ele será executado automaticamente no horário configurado.
- / etc / cron.diariamente
- / etc / cron.de hora em hora
- / etc / cron.por mês
- / etc / cron.semanalmente
Por exemplo, para executar um script uma vez por mês, você precisará colocá-lo no diretório / etc / cron.por mês.
Ver Cron Jobs
Ver empregos para o usuário atual
Use o seguinte comando para visualizar todos os cron jobs programados para o usuário atual:
$ crontab -lVer trabalhos para os usuários root
Para visualizar todos os trabalhos agendados do usuário root, emita o seguinte comando no Terminal:
$ cat / etc / crontabVocê precisará fazer o login como usuário root ou executar o comando como sudo.
Ver empregos para os outros usuários
Para visualizar todos os trabalhos agendados de um usuário específico, emita o seguinte comando no Terminal substituindo o
Para executar este comando, você precisará de privilégios sudo.
Ver cron jobs de hora em hora
Para visualizar todos os cron jobs configurados para execução de hora em hora, emita o seguinte comando no Terminal:
$ ls -la / etc / cron.de hora em horaVer cron jobs diários
Para visualizar todos os cron jobs configurados para execução diária, emita o seguinte comando no Terminal:
$ ls -la / etc / cron.diariamente/Ver cron jobs semanais
Para visualizar todos os cron jobs configurados para serem executados semanalmente, emita o seguinte comando no Terminal:
$ ls -la / etc / cron.semanalmente/Ver cron jobs mensais
Para visualizar todos os cron jobs configurados para execução mensal, emita o seguinte comando no Terminal:
$ ls -la / etc / cron.por mês/Fazer backup de todos os trabalhos cron
Recomenda-se manter um backup de todos os trabalhos do cron em um arquivo para que você possa recuperar em caso de exclusão. Para fazer um backup de todos os trabalhos atuais, use o operador de redirecionamento para redirecionar a saída de crontab -l para um arquivo.
$ crontab -l> backup_cron.TXTRemovendo todos os Cron Jobs agendados
Para remover todos os cron jobs agendados, use a sinalização -r da seguinte maneira:
$ crontab -rPermissão Cron
Podemos limitar o acesso ao comando crontab por meio de dois arquivos: / etc / cron.permitir e / etc / cron.negar.
- / etc / cron.permitir - Adicione usuários (um por linha) a quem deseja permitir acesso aos comandos crontab. Esses usuários podem executar tarefas agendadas.
- / etc / cron.negar - Adicione usuários (um por linha) a quem você deseja negar acesso aos comandos crontab. Esses usuários não podem executar trabalhos agendados.
Geradores de sintaxe Crontab
Existem alguns sites que permitem gerar sintaxe para crontabs. Esses sites tornam mais fácil gerar a expressão crontab sem ter que se lembrar da sintaxe. Embora existam vários sites disponíveis para geradores de sintaxe, como crontabgenerator.com, crontab-generator.org e cronmaker.com. O que eu mais prefiro e achei útil é o crontab.guru. Com base na entrada do usuário, ele gera uma expressão crontab que você pode copiar e colar no arquivo crontab.
Conclusão
Neste tutorial, explicamos os fundamentos dos cron jobs, sua sintaxe e como configurá-lo. Também discutimos como visualizar tarefas cron, criar um backup e removê-las se não forem mais necessárias.