
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.service
e 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
- E finalmente inicie os trabalhos:
sudo systemctl start scheduledReboot.timer
sudo systemctl enable scheduledReboot.timer
- 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.