Executando um cron job a cada 5 minutos no arco

4

Eu pesquisei algumas respostas, mas nada parece esclarecer minha confusão.

Eu tenho um cron job que quero executar a cada 5 minutos:

*/5 * * * * cd /mnt/internal-storage/coindata && shell/command coins update

Coloco isso na pasta /etc/cron.daily ou crie um /etc/cron.minutely ?

Além disso, que tipo de arquivo eu crio dentro desta pasta?

    
por Derek 12.10.2017 / 06:21

2 respostas

4

A melhor solução para isso provavelmente adicionará uma linha ao seu crontab. Acessar o arquivo crontab pode diferir entre as implementações do cron, então eu forneci comandos para as duas implementações do cron nos repos oficiais do Arch. Se você quiser uma solução que não requeira uma implementação específica do cron, escrevi outra resposta que usa systemd / Timers em seu lugar.

crontab -e ou variantes dele usam a variável de ambiente EDITOR (o padrão é vi). Se você deseja usar um editor diferente, exporte-o para a variável EDITOR da seguinte forma:

export EDITOR=vim

onde o vim é substituído pelo editor de sua escolha.

Editando o crontab com o cronie:

crontab -e

Editando crontab com fcron:

fcrontab -e

Adicione seu comando cron ao arquivo e salve-o:

*/5 * * * * cd /mnt/internal-storage/coindata && shell/command coins update

O formato das linhas neste arquivo é

minute hour day_of_month month day_of_week command

Se o cron não estiver em execução, inicie seu daemon.

Para o cronie: systemctl start cronie.service

Para fcron: systemctl start fcron.service

Se você quiser que os comandos no crontab continuem a ser executados após a reinicialização, certifique-se de que o daemon do cron esteja ativado:

systemctl enable cronie.service ou systemctl enable fcron.service

    
por 12.10.2017 / 12:24
3

O sistema de cronometragem integrado do Arch Linux é systemd / Timers . O Wiki do Arch lista vários prós e contras para usá-lo como um substituto do cron . Eu adicionaria outro pro: nenhuma implementação do cron precisa ser instalada.

No geral, eu recomendo usar um cronjob para simplificar, mas esta é uma solução que deve (em teoria) funcionar em qualquer instalação do Arch; a implementação do cron irrelevante.

Uma implementação em Timers (substitua TIMERNAME por um nome para seu timer):

Local do arquivo de timer: /etc/systemd/system/TIMERNAME.timer

[Unit]
Description=Run TIMERNAME every five minutes

[Timer]
OnCalendar=*:0/15
Persistent=true     

[Install]
WantedBy=timers.target

Local do arquivo de serviço do timer: /etc/systemd/system/TIMERNAME.service

[Unit]
Description=Run some commands - for use with TIMERNAME.service

[Service]
ExecStart=cd /mnt/internal-storage/coindata && shell/command coins update
# Alternatively could be used to run a script with the above commands in it.
# If your script is located at /usr/local/bin, change the above command to:
#    ExecStart:/usr/local/bin/SCRIPTNAME

[Install]
WantedBy=multi-user.target

Para começar, execute:

systemctl start TIMERNAME.timer

Para ativar (para que continue funcionando após reinicializações futuras):

systemctl enable TIMERNAME.timer

Parar e desabilitar seguem o mesmo formato.

    
por 12.10.2017 / 11:40