Arch Linux — как запустить задание cron?

Arch Linux — как запустить задание cron?

Я работаю на Arch Linux и пытаюсь создать задание cron, которое будет запускаться каждую минуту. Поэтому я использую:

$ crontab -e

И добавьте скрипт в:

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

(Понятия не имею, что это за "/tmp/crontab.8VZ7vq"!)

Но это не работает - CPU.R не запускается каждую минуту. Что мне тогда делать в Arch Linux, чтобы запустить задание cron? Я посмотрел эти руководства вики ниже, но я все еще запутался:

Редактировать

Я нашел несколько подсказок отздеськасательно 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.

Что это значит?Гдедолжен ли я поставить этот crond.service ичтокакой сценарий мне следует туда вставить?

решение1

Здесь нетcrond.сервисна Arch Linux. Как совершенно ясно говорит Arch Wiki:

Существует множество реализаций cron, но ни одна из них не установлена ​​по умолчанию, поскольку базовая система использует вместо этого systemd/Timers.

Следовательно, если вы хотите использовать cron, вам придетсявыбиратькакую из многочисленных реализаций вы установите, а затем запустите эту конкретную службу.

Вы не просто набираете текст наугад systemctl enable nonexistent.service, а потом удивляетесь, почему он не работает...

Если вам нужен cronie, то установите cronie и запустите его с помощью:

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

Документация Arch в целом очень понятна; если вы внимательно прочитаете страницы, на которые вы ссылаетесь, вы поймете, что вам нужно.

решение2

Если я правильно вас понял, вы имеете в виду...

Как запустить задание «cron»

...запланированные события на Arch Linux. Это довольно просто, используя systemd/Timers в качестве замены cron.

Хотя cron, пожалуй, является самым известным планировщиком заданий, альтернативой могут стать таймеры systemd.

Преимущества

Основные преимущества использования таймеров заключаются в том, что каждое задание имеет свою собственную службу systemd. Вот некоторые из этих преимуществ:

  • Задания можно легко запускать независимо от их таймеров. Это упрощает отладку.
  • Каждое задание можно настроить для выполнения в определенной среде (см. systemd.exec(5)).
  • Задания можно прикреплять к контрольным группам.
  • Задания можно настроить так, чтобы они зависели от других модулей systemd.
  • Задания регистрируются в журнале systemd для удобства отладки.

...как уже упоминалосьздесь

Если вам нужно использовать cron, это все еще возможно и описаноздесь.


Чтобы сделать этот ответ полезным, вот минимальный пример дляежедневная автоматическая запланированная перезагрузкав 01:30.

1. Создайте два файла: один служебный файл и один файл таймера.Оба имени (.timer и .service) должны совпадать. Фе:

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

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

(Папка /usr/lib/systemd/system/... — это папка по умолчанию, содержащая все файлы .service, просто к вашему сведению)

2.1 Файл schedulenReboot.service содержит:

[Unit]
Description=Scheduled Reboot

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

2.2 Файл schedulenReboot.timer содержит:

[Unit]
Description=Reboot Scheduling.

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

[Install]
WantedBy=multi-user.target
  1. И наконец приступим к работе:

sudo systemctl start scheduledReboot.timer

sudo systemctl enable scheduledReboot.timer

  1. Проверьте, успешно ли создана работа:

sudo systemctl list-timers --all

и/или

sudo systemctl status scheduledReboot.timer

..который показывает что-то вроде:

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


Мне лично очень нравится подход systemd / .service, так как я использую все свои системные задания с systemctl, например, автоматическое монтирование моих дисков nfs и т. д., и он работает очень хорошо и эффективно.

решение3

е

создайте файл с вашей задачей crone и т.д. cron.txt

cat cron.txt 0 1 * * * systemctl остановить iradio; shutdown -P 0 30 23 * * * systemctl остановить часы 34 23 * * * systemctl запустить часы

затем crontab для нового файла

кронтаб cron.txt

Кажется, теперь это работает.

Связанный контент