Questão Como faço para configurar um trabalho Cron?


Eu quero agendar uma tarefa para ser executada regularmente e ouvi dizer que o Cron é a maneira de fazer isso.

Como faço para adicionar tarefas Cron no Ubuntu?


486
2017-08-16 08:25


origem




Respostas:


Coloque um script de shell em uma dessas 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 mais tarefas específicas, por exemplo duas vezes por mês ou a cada 5 minutos. Vá até o terminal e digite:

crontab -e

Isto irá abrir o seu crontab pessoal (arquivo de configuração do cron). A primeira linha desse arquivo explica tudo! Em cada linha você pode definir um comando para executar e sua programação, e o formato é bem simples quando você pega o jeito dele. A estrutura é:

minute hour day-of-month month day-of-week command

Para todos os números, você pode usar listas, por exemplo 5,34,55 no campo de minutos, será executado em 5 passado, 34 passado e 55 passado, seja qual for a 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 a 0,20,40.

Então, para executar um comando toda segunda-feira às 5:30 da tarde:

30 17 * * 1 /path/to/command

ou a cada 15 minutos

*/15 * * * * /path/to/command

Observe que o dia da semana vai de 0 a 6, onde 0 é domingo.

Você pode ler mais Aqui.


600
2017-08-16 08:58



Estes são de todo o sistema e são executados com altos privilégios. Eu não colocaria nada lá a menos que houvesse uma necessidade urgente de acesso ou permissão. Como regra geral, tente fazer coisas sem recursos. Portanto, eu gosto desta resposta melhor: ubuntu.stackexchange.com/questions/2368/how-do-i-setup-cron-job/… - H Marcelo Morales
@Marcelo Morales, que também irá executar os comandos fornecidos como root! se você, por outro lado, não usa sudo, então você criará um crontab de usuário e este será executado como o usuário que o criou! - LassePoulsen
* / 15 * * * * / path / to / command foi muito útil para mim! obrigado! - Andrew Odendaal
Vale a pena notar que estas mudanças são aplicadas automaticamente, você não precisa reiniciar / recarregar nada. - Molomby
Outra dica útil é que, em vez de */15 * * * * /path/to/command, você pode fazer @reboot /path/to/command para executar algo na inicialização. - Kenneth Worden


Se o trabalho que você deseja executar puder ser executado com os mesmos privilégios que o seu usuário, eu recomendo usar um crontab de usuário que você pode editar executando EDITOR="gedit" crontab -e(que será usado gedit para editar o arquivo crontab) ou simplesmente crontab -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 essa

*/10 * * * * /usr/bin/somedirectory/somecommand

e salve o arquivo.

Você pode ver o conteúdo do usuário crontab com crontab -l.

A maneira mais flexível é usar o crontab do sistema que você pode editar executando sudo crontab -e em um terminal. Isso permitirá que você execute seus comandos como root (no caso de precisar desse nível de privilégio) ou qualquer outro usuário no sistema.

Então, se você quiser executar algo a cada 10 minutos, raiz, por exemplo, você adiciona uma linha como esta

*/10 * * * * root /usr/bin/somedirectory/somecommand

e salve o arquivo.(observe a adição do usuário na linha)

Você pode ver o conteúdo do arquivo crontab do sistema com sudo crontab -l.

Mais detalhes em: https://help.ubuntu.com/community/CronHowto


93
2017-08-16 09:21



Aqui está um manipulador de cron interativo doce que lhe dará o Inglês para o tempo do cron crontab.guru - CTS_AE


Se preferir fazer isso usando uma GUI, você pode ir ao Centro de Software e instalar Atividades agendadas (ou corra 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 raiz. Isso geralmente é uma coisa boa.


51
2018-01-31 23:59



não está disponível para 16,04 aparentemente bugs.launchpad.net/ubuntu/+source/gnome-schedule/+bug/1576060 - TankorSmash
@TankorSmash Você pode obtê-lo Aqui - M. Becerra
Os requisitos de pacote não podem ser atendidos em 16.04 - Odysseus Ithaca


Eu recomendo Agendador de Tarefas do KDE (kde-config-cron)  Install kde-config-cron. Acesse a partir do Configurações de sistema no Agendador de tarefas módulo lá.

Ele gerencia os Crontabs pessoais e de sistema, e a facilidade de criar os limites de tempo me surpreendeu muito (veja a imagem abaixo). Eu acho que essa parte é realmente subestimada.

enter image description here


24
2018-02-11 14:35





O Agendador de Tarefas do KDE não funcionará no Ubuntu regular. Funciona apenas em sistemas KDE como o KUbuntu. Para sistemas que não são do KDE, você irá preferir usar o gnome-schedule

$ sudo apt-get install gnome-schedule

O aplicativo é tarefas agendadas no Dash.


11
2017-09-27 20:25



Não foi encontrado para o Ubuntu 16.04 - SaidbakR
Por favor, dê uma olhada I can't install gnome schedule on Ubuntu 16.04 @ askubuntu.com/questions/785657/…. Existe um pacote para baixar @ bugs.launchpad.net/ubuntu/+source/gnome-schedule/+bug/1576060/…. Apenas executar $ sudo dpkg -i gnome-schedule_2.3.0-0ubuntu16.04_amd64.deb - Antonio


Eu queria definir um trabalho Cron para executar um script bash, portanto, a execução do script adicionaria um cron job.

Eu percebi que quando você faz uso de:

crontab -e 

Então 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 no 14.04, pelo menos, podemos executar os seguintes comandos bash para criar um novo trabalho Cron:

echo "30 17 * * 1 /path/to/command" > /var/spool/cron/crontabs/root

Também precisamos definir a propriedade correta do arquivo:

chown root:root /var/spool/cron/crontabs/root

E defina as permissões corretas:

chmod 600 /var/spool/cron/crontabs/root

Se quando você correr crontab -e Já existem trabalhos Cron na lista, então você pode anexar à lista usando o seguinte comando:

echo "30 17 * * 1 /path/to/command" >> /var/spool/cron/crontabs/root

8