Crontab é uma ferramenta de execução agendada comumente usada em sistemas Unix/Linux, que pode executar tarefas específicas sem intervenção manual. Muitas vezes temos que usar o comando Crontab. Por exemplo, o script acme.sh mencionado no certificado SSL de nome de domínio gratuito Let’s Encrypt Wildcard usa a tarefa agendada Crontab para atualizar o certificado SSL.
Através do comando crontab, podemos executar instruções de sistema específicas ou scripts de shell em intervalos fixos. Quando o VPS Linux monta o Google Drive e o Dropbox, podemos usar o comando Crontab para obter backup de sincronização agendado e usar o Crontab para reiniciar o VPS e o servidor regularmente. todos os dias ou serviços Nginx, PHP, Mysql, etc.
Resumindo, dominar a sintaxe básica do comando Crontab é muito necessário para gerenciarmos nossos próprios hosts VPS. Este artigo explica como usar o comando Linux Crontab por meio de exemplos sem entrar em uma exploração aprofundada. no futuro.
Para mais comandos e aplicativos relacionados à hospedagem VPS, você pode conferir:
- Resumo dos comandos de monitoramento do sistema Linux - CPU mestre, memória, E/S de disco, etc. para encontrar gargalos de desempenho
- Três ferramentas de comando Rsync, SCP e Tar-solução rápida para realocação remota de sites VPS e sincronização de dados
- Três maneiras de compartilhar diretórios de pastas no Linux - montagem remota NFS, armazenamento compartilhado GlusterFS e diretórios compartilhados samba
1. Visualização do Crontab e edição do reinício
1. Veja a lista de tarefas de execução agendada do crontab
crontab -l
2. Edite o crontab para executar tarefas regularmente
crontab -e
3. Exclua tarefas agendadas do crontab
crontab -r
4. Comandos relacionados:
sudo service crond start #启动服务
sudo service crond stop #关闭服务
sudo service crond restart #重启服务
sudo service crond reload #重新载入配置
sudo service crond status #查看服务状态
2. Sintaxe de formato básico do Crontab
Expressão de tempo do crontab:
基本格式 :
* * * * * command
分 时 日 月 周 命令
Vejamos um exemplo primeiro. Execute o programa de backup à 1h todos os dias: 0 1 * * * /root/wzfou.com/backup.sh
. Entre eles, /root/wzfou.com/backup.sh
é o caminho do script. Para usar o caminho absoluto, consulte a figura abaixo para o formato de data anterior.
Instância 1: é executada a cada 1 minuto
* * * * * /root/wzfou.com/backup.sh
Instância 2: Executa uma vez a cada hora no 3º e 15º minuto
3,15 * * * * /root/wzfou.com/backup.sh
Exemplo 3: Executar uma vez por dia, das 8h às 11h, no 3º e 15º minuto
3,15 8-11 * * * /root/wzfou.com/backup.sh
Instância 4: Executada a cada dois dias no 3º e 15º minuto, das 8h às 11h
3,15 8-11 */2 * * /root/wzfou.com/backup.sh
Instância 5: Executada todas as segundas-feiras, das 8h às 11h, no 3º e 15º minuto
3,15 8-11 * * 1 /root/wzfou.com/backup.sh
Exemplo 6:Executar uma vez todas as noites às 21h30
30 21 * * * /root/wzfou.com/backup.sh
Instância 7: Execute uma vez por mês às 4h45 nos dias 1, 10 e 22
45 4 1,10,22 * * /root/wzfou.com/backup.sh
Exemplo 8:Executar uma vez todo sábado e domingo às 13h10
10 1 * * 6,0 /root/wzfou.com/backup.sh
Instância 9: Executada a cada 30 minutos entre 18h e 23h todos os dias
0,30 18-23 * * * /root/wzfou.com/backup.sh
Instância 10: Executar uma vez todo sábado às 23h
0 23 * * 6 /root/wzfou.com/backup.sh
Exemplo 11:Executar uma vez a cada hora
* */1 * * * /root/wzfou.com/backup.sh
Exemplo 12:Executado a cada hora entre 23h00 de cada noite e 7h00 do dia seguinte
* 23-7/1 * * * /root/wzfou.com/backup.sh
Exemplo 13: é executado no primeiro dia de cada semana (ou seja, começa às 24h todos os domingos à noite).
@weekly /root/wzfou.com/backup.sh
Exemplo 14:Execute uma vez no dia 15 de cada mês.
0 11 15 * * /root/wzfou.com/backup.sh
Instância 15: é executado uma vez no primeiro dia de cada mês (ou seja, começa às 0h do primeiro dia de cada mês).
@monthly /root/wzfou.com/backup.sh
Instância 16: é executado uma vez no mês especificado (executado uma vez todas as noites às 0h em janeiro, abril e junho).
0 0 * jan,apr,jun * /root/wzfou.com/backup.sh
Instância 17: Execute uma vez após reiniciar.
@reboot /root/wzfou.com/backup.sh
Exemplo 18:Envie uma notificação por e-mail após a execução da tarefa agendada.
MAILTO="raj" 1 1 * * * /root/wzfou.com/backup.sh
Exemplo 19: Especifique o shell (o padrão é /bin/bash)
SHELL=/bin/sh 1 1 * * * /root/wzfou.com/backup.sh
Instância 20: especifica variáveis de ambiente.
PATH=/sbin:/bin:/usr/sbin:/usr/bin 1 1 * * * /root/wzfou.com/backup.sh
4. Possíveis problemas com o Crontab
4.1 Crontab não entra em vigor imediatamente
Sua tarefa agendada do Crontab recém-criada precisará esperar 2 minutos antes de ser executada após salvá-la. Claro, se quiser executá-la imediatamente, você pode reiniciar o Crontab. Quando o crontab falha, você pode tentar /etc/init.d/crond restart para resolver o problema ou verificar o log para ver se uma determinada tarefa foi executada/um erro foi relatado tail -f /var/log/cron.
4.2 Crontab não executa
Quando o caminho do arquivo estiver envolvido no script, escreva o caminho global. Após atualizar a hora e o fuso horário do sistema, o cron precisa ser reiniciado. Quando a execução manual do script está OK, mas o crontab não é executado, provavelmente é uma variável de ambiente. Você pode tentar introduzir diretamente a variável de ambiente no crontab para resolver o problema, por exemplo:
0 * * * * . /etc/profile;/bin/sh /root/wzfou.com/backup.sh
4.3 Crontab não tem permissão para executar
Preste atenção ao agendamento de tarefas no nível do sistema e no agendamento de tarefas no nível do usuário. Somente o usuário root e o proprietário do arquivo crontab podem executar -e, -l, -r e - v< Use UserName após o sinalizador ept4> para editar, listar, remover ou verificar o arquivo crontab para um usuário especificado.
A operação de agendamento de tarefas do usuário root pode ser definida por meio de "crontab -uroot -e" ou as tarefas agendadas podem ser gravadas diretamente no arquivo /etc/crontab.
Para editar o crontab de outro usuário, execute o seguinte comando como root. O mesmo formato (anexe "-u username" ao final do comando) também pode ser usado para listar ou excluir crontabs.
crontab -u username -e
4.4 Notificação após execução do Crontab
Quando a tarefa agendada do Crontab for executada no horário que você especificar, o sistema enviará uma carta mostrando o conteúdo de execução do programa, que pode ser visto no log /var/log/cron. Se você não deseja receber tal notificação, adicione > /dev/null 2>&1
após um espaço em cada linha.