Arch Linux - Como executar um cron job?

Arch Linux - Como executar um cron job?

Estou no Arch Linux e estou tentando fazer um cron job que é acionado a cada minuto. Então eu uso:

$ crontab -e

E adicione o script em:

* * * * * Rscript /srv/shiny-system/cron/CPU.R
~
~
"/tmp/crontab.8VZ7vq" 1 line, 47 characters 

(Não tenho ideia do que é "/tmp/crontab.8VZ7vq"!)

Mas não está funcionando - CPU.R não está funcionando a cada minuto. O que devo fazer no Arch Linux para executar o cron job? Examinei estes guias wiki abaixo, mas ainda estou perdido:

Editar

Encontrei algumas dicas deaquia respeito de crond.

[xxx@localhost ~]$ systemctl status crond
● crond.service
   Loaded: not-found (Reason: No such file or directory)
   Active: inactive (dead)
[xxx@localhost ~]$ sudo systemctl start crond
[sudo] password for xxx: 
Failed to start crond.service: Unit crond.service failed to load: No such file or directory.

O que isto significa?Ondedevo colocar este crond.service eo quescript que devo colocar nele?

Responder1

Não hácrond.serviçono Arch Linux. Como o Arch Wiki deixa perfeitamente claro:

Existem muitas implementações de cron, mas nenhuma delas é instalada por padrão, pois o sistema básico usa systemd/Timers.

Conseqüentemente, se você quiser usar o cron, você deveescolherqual das muitas implementações você instalará e, em seguida, iniciará esse serviço específico.

Você não digita aleatoriamente systemctl enable nonexistent.servicee depois se pergunta por que não está funcionando ...

Se você quiser o cronie, instale o cronie e inicie-o com:

pacman -Syu cronie
systemctl enable --now cronie.service

A documentação do Arch é geralmente muito clara; se você ler as páginas vinculadas com mais atenção, descobrirá o que precisa.

Responder2

Se bem entendi, você quer dizer com...

Como executar um trabalho 'cron'

...eventos agendados no arch Linux. Isso é muito simples usando systemd/Timers como substituto do cron.

Embora o cron seja indiscutivelmente o agendador de tarefas mais conhecido, os temporizadores do systemd podem ser uma alternativa.

Benefícios

Os principais benefícios do uso de temporizadores vêm do fato de cada trabalho ter seu próprio serviço systemd. Alguns desses benefícios são:

  • Os trabalhos podem ser facilmente iniciados independentemente dos seus temporizadores. Isso simplifica a depuração.
  • Cada trabalho pode ser configurado para ser executado em um ambiente específico (consulte systemd.exec(5)).
  • Os trabalhos podem ser anexados a cgroups.
  • Os trabalhos podem ser configurados para depender de outras unidades do systemd.
  • Os trabalhos são registrados no diário do systemd para facilitar a depuração.

...como mencionadoaqui

Se você tiver que usar o cron, ainda é possível e descritoaqui.


Para tornar esta resposta útil, um exemplo mínimo para umreinicialização programada automática diáriaàs 01h30.

1. Crie dois arquivos, um arquivo de serviço e um arquivo de timer.Ambos os nomes (.timer e .service) devem corresponder. Fé:

sudo vim /usr/lib/systemd/system/scheduledReboot.service

sudo vim /usr/lib/systemd/system/scheduledReboot.timer

(A pasta /usr/lib/systemd/system/... é a pasta padrão que contém todos os arquivos .service apenas para sua informação)

2.1 O arquivo ScheduledReboot.service contém:

[Unit]
Description=Scheduled Reboot

[Service]
Type=simple
ExecStart=/usr/bin/systemctl --force reboot

2.2 O arquivo ScheduledReboot.timer contém:

[Unit]
Description=Reboot Scheduling.

[Timer]
OnCalendar=*-*-* 01:30:00

[Install]
WantedBy=multi-user.target
  1. E finalmente inicie os trabalhos:

sudo systemctl start scheduledReboot.timer

sudo systemctl enable scheduledReboot.timer

  1. Verifique se o trabalho foi criado com sucesso:

sudo systemctl list-timers --all

e/ou

sudo systemctl status scheduledReboot.timer

..isso mostra coisas como:

Trigger: Sun 2020-05-31 01:30:00 EDT; 10h left


Pessoalmente, gosto muito da abordagem systemd / .service, pois uso todos os meus trabalhos de sistema com systemctl, como montagem automática de minhas unidades nfs e assim por diante, e funciona muito bem e eficientemente.

Responder3

e

crie um arquivo com sua tarefa crone etc. cron.txt

cat cron.txt 0 1 * * * systemctl stop iradio; shutdown -P 0 30 23 * * * systemctl stop clock 34 23 * * * systemctl start clock

então crontab o novo arquivo

crontab cron.txt

Parece estar funcionando agora.

informação relacionada