Quero agendar uma tarefa para ser executada regularmente e ouvi dizer que Cron é a maneira de fazer isso.
Como adiciono trabalhos do Cron no Ubuntu?
Coloque um script shell em uma destas pastas: /etc/cron.daily
, /etc/cron.hourly
, /etc/cron.monthly
ou /etc/cron.weekly
.
Se isso não lhe bastar, você pode adicionar tarefas mais específicas, por exemplo, duas vezes por mês ou a cada 5 minutos. Vá para o terminal e digite:
crontab -e
Isso abrirá seu crontab pessoal (arquivo de configuração 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 é bastante simples quando você pega o jeito. A estrutura é:
minute hour day-of-month month day-of-week command
Para todos os números que você pode usar listas, por exemplo, 5,34,55
no campo de minutos, será executado às 5, 34 e 55, independentemente da hora definida.
Você também pode usar intervalos. Eles são definidos como este: */20
. Este exemplo significa a cada 20, portanto, 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 varia de 0 a 6, onde 0 é domingo.
Você pode ler mais aqui .
*/15 * * * * /path/to/command
, você pode fazer@reboot /path/to/command
para executar algo na inicialização.Se o trabalho que você deseja executar pode ser executado com os mesmos privilégios do seu usuário, recomendo o uso de 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ê deseja executar algo a cada 10 minutos, por exemplo, adicione uma linha como esta
e salve o arquivo.
Você pode ver o conteúdo do usuário crontab com
crontab -l
.Para adicionar um trabalho cron que seja 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. Nesse arquivo, o usuário que cada comando 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
cat /etc/crontab
.Mais detalhes em: https://help.ubuntu.com/community/CronHowto
fonte
Se você preferir fazê-lo usando uma GUI, poderá acessar o Centro de Software e instalar 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.
fonte
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 limites de tempo me surpreendeu bastante (veja a captura de tela abaixo). Eu acho que essa parte é realmente subestimada.
fonte
O Agendador de tarefas do KDE não funcionará no Ubuntu comum. Funciona apenas em sistemas KDE como o KUbuntu. Para sistemas que não são do KDE, você prefere usar o gnome-schedule
O aplicativo é Tarefas agendadas no Dash.
fonte
I can't install gnome schedule on Ubuntu 16.04
@ askubuntu.com/questions/785657/… . Há um pacote para baixar @ bugs.launchpad.net/ubuntu/+source/gnome-schedule/+bug/1576060/… . Apenas execute$ sudo dpkg -i gnome-schedule_2.3.0-0ubuntu16.04_amd64.deb
Eu queria definir um trabalho do Cron para executar 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 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:
Também precisamos definir a propriedade correta para o arquivo:
E defina as permissões corretas:
Se, ao executar
crontab -e
, já houver trabalhos Cron na lista, você poderá anexá-lo usando o seguinte comando:fonte
Exemplo de execução de script
test_cron.sh
pelo cron a cada minuto no Ubuntu 18.04 usando o link simbólico:test_cron.sh
Arquivo:Se você deseja 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 no tempo de execução.myname
é o nome de usuário (parte do grupo raiz, não tenho certeza de que sejam necessários privilégios de raiz).Permita 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
Mudei o proprietário e o tornei executável:
Adicionei link simbólico:
Registrado quando
myname
adicionei nova tarefa para executar atest_cron
cada minuto.Para verificar se o comando na lista:
Para verificar a execução
fonte