Quero agendar uma tarefa para ser executada regularmente e ouvi dizer que o Cron é a maneira de fazer isso.
Como adiciono trabalhos Cron no Ubuntu?
Quero agendar uma tarefa para ser executada regularmente e ouvi dizer que o Cron é a maneira de fazer isso.
Como adiciono trabalhos Cron no Ubuntu?
Coloque um script de shell em uma destas pastas:
/etc/cron.daily
,/etc/cron.hourly
,/etc/cron.monthly
ou/etc/cron.weekly
.Se isso não for suficiente para você, você pode adicionar tarefas mais específicas, por exemplo, duas vezes por mês ou a cada 5 minutos. Acesse o terminal e digite:
Isso abrirá seu crontab pessoal (arquivo de configuração do cron). A primeira linha desse arquivo explica tudo! Em cada linha você pode definir um comando a ser executado e seu agendamento, e o formato é bem simples quando você pega o jeito. A estrutura é:
Para todos os números que você pode usar listas, por exemplo,
5,34,55
no campo de minutos significará correr às 5, 34 e 55, independentemente da hora definida.Você também pode usar intervalos. Eles são definidos assim:
*/20
. Este exemplo significa a cada 20, então na coluna de minutos é equivalente a0,20,40
.Então, para executar um comando toda segunda-feira às 5:30 da tarde:
ou a cada 15 minutos
Observe que o dia da semana vai de 0 a 6, onde 0 é domingo.
Você pode ler mais aqui .
Se o trabalho que você deseja executar puder ser executado com os mesmos privilégios do seu usuário, recomendo usar um usuário crontab que você pode editar executando
EDITOR="gedit" crontab -e
(que usará o gedit para editar o arquivo crontab) ou simplesmentecrontab -e
(que usará o editor padrão) em um terminal.Se você quiser executar algo a cada 10 minutos, por exemplo, adicione uma linha como esta
e salve o arquivo.
Você pode ver o conteúdo do crontab do usuário com
crontab -l
.Para adicionar um cron job executado como root, você pode editar o crontab do root executando
sudo crontab -e
.A maneira mais flexível é usar o crontab do sistema,
/etc/crontab
que você pode editar apenas com privilégios de root. Neste arquivo, cada comando do usuário deve ser executado conforme especificado, para que você possa executar seus comandos como root (caso precise desse nível de privilégio) ou qualquer outro usuário no sistema.Por exemplo, se você quiser executar algo a cada 10 minutos como root, adicione uma linha como esta
(observe a adição do usuário à linha)
Você pode ver o conteúdo do arquivo crontab do sistema com a extensão
cat /etc/crontab
.Mais detalhes em: https://help.ubuntu.com/community/CronHowto
Se preferir fazer isso usando uma GUI, você pode acessar o Centro de Software e instalar as tarefas agendadas (ou executar
sudo apt-get install gnome-schedule
). Ele fornecerá uma GUI poderosa para adicionar tarefas cron.Observe que, se você usar esse método, as tarefas por padrão serão executadas como seu próprio usuário, não como root. Isso geralmente é uma coisa boa.
Eu recomendo o Agendador de Tarefas do KDE (
kde-config-cron
) . Acesse-o nas configurações do sistema no módulo Agendador de tarefas .Ele gerencia os Crontabs pessoais e do sistema, e a facilidade de criar os limites de tempo me surpreendeu muito (veja a captura de tela abaixo). Eu acho que essa parte é muito subestimada.
Eu queria definir um trabalho Cron para ser executado por meio de um script bash, portanto, a execução do script adicionaria um trabalho cron.
Percebi que quando você faz uso de:
Em seguida, ele cria o arquivo:
/var/spool/cron/crontabs/root
Onde root é o nome do usuário que está executando o comando crontab. Portanto, com base nisso e pelo menos no 14.04, podemos executar os seguintes comandos bash para criar um novo trabalho Cron:
Também precisamos definir a propriedade correta para o arquivo:
E defina as permissões corretas:
Se quando você executar
crontab -e
já houver trabalhos Cron na lista, você poderá anexar à lista usando o seguinte comando:O Agendador de Tarefas do KDE não funcionará no Ubuntu normal. Funciona apenas em sistemas KDE como o KUbuntu. Para sistemas não KDE você irá preferir usar o gnome-schedule
O aplicativo é tarefas agendadas no Dash.
Exemplo de execução de script
test_cron.sh
pelo cron a cada minuto no Ubuntu 18.04 usando link simbólico:test_cron.sh
Arquivo:Se você quiser usar variáveis de ambiente em seu script como
$USER
nos caminhos, é melhor digitar o caminho preciso, o bash não conhecerá suas variáveis em tempo de execução.myname
é o nome de usuário (parte do grupo root, não tenho certeza se os privilégios de root são necessários).Permitir que os usuários definam tarefas cron, o arquivo será criado se necessário:
O caminho para o script é
/home/myname/shell/test_cron.sh
Eu mudei o proprietário e tornei executável:
Eu adicionei link simbólico:
Logado como
myname
eu adicionei nova tarefa para executar atest_cron
cada minuto.Para verificar se o comando na lista:
Para verificar a execução
Considerando que você tem vários cron jobs com um usuário específico e eles não compartilham o mesmo agendamento. Você pode simplesmente criar um arquivo em
/etc/cron.d/
Vamos dizer que o nome do arquivo émyjobs
, então, basta escrever todos os seus agendadores nesse arquivo e, em seguida, executar o seguinte comando.crontab -u <username> /etc/cron.d/myjobs