Comments 23
Можно даже будет попытаться снабдить каждое окно своим таймером, но это уже лишнее наверное.
Это кусок функционала undo у меня, если что.
А тогда уже буду костыли убирать. Мне сейчас ещё надо с лексикой разобраться…
Большой плюс текущей версии в краткости, большинство самых частых команд укладываются в два нажатия. А в новой я вроде как реализовал чисто вимовское verb+noun+указатель, но теперь всё занимает три нажатия. И если в среднем норм, то, к примеру, в плеере это раздражает ( Do Player Next вместо Player Next).
Вот и думаю, как его сделать
Очевидный плюс крона: "все расписания конкретного пользователя в одном месте", уведомления на почту, если что-то пошло не так
Очевидный минус — в статье описано: куча мест, где может быть расписание (/etc/crontab, /etc/cron.d/, /var/spool/cron), cron не понимает нужно ли было стартовать сервис, если сервер был выключен, сложно строить гибкие расписания (приходится дублировать строчки).
Очевидный плюс timers — они сильно более продвинутые, на них можно сделать все
Минусы — иногда приходится писать x2 набор юнитов (*.timer
, *.service
), но это плата за гибкость
В статье еще не хватает команд для "показать список всех таймеров" и "время их следующего срабатывания" (если что — это не analyze вроде) — в кроне такого нет )))
В статье еще не хватает команд для «показать список всех таймеров» и «время их следующего срабатывания» (если что — это не analyze вроде) — в кроне такого нет )))
Спасибо, Что-то совсем из головы вылетело. Сейчас добавлю!
уведомления на почту, если что-то пошло не так
Для систем без почтового сервера плюс так себе. Ошибки толком нигде не пишутся и их надо выуживать из системного лога.
По-моему, по сравнению с 0 частью статья потеряла лаконичность.
Опишите, пожалуйста, в одной из будущих статей всё разнообразие триггеров. Коротко и без подробного вникание в каждый тип.
но я горд — почти всё сделал и как выясняется без костылей!
спасибо, с огромным удовольствием прочитал и жду продолжения.
Сдавал LPIC101-500(Jun level) летом, там был не плохой материал про это все, также был расстроен аналог at-> systemd-run
https://learning.lpi.org/en/learning-materials/102-500/107/
at
можно сделать на основе проекта systemd-cron, возможно даже форкнув его и запросив PR в основной проект. Состояние юнитов в systemd-run
не сохраняется между перезагрузками. Эта штука только для рантайма.зачем это все, если есть systemd-timers?
at
я-б не отказался, например… но с systemd-шным синтаксисом задания времени, разумеется. И возможностью задания systemd-шных же параметров. Вообще странно, что в systemd не реализован cli интерфейс к таймерам. Какой-нить условный timerctl
. А то systemctl list-timers
Уж очень ограничен по функционалу. Кстати systemd-cron грамотно так реализован, всё по *.target
-ам раскидано, например.OnActiveSec=
параметр задержки после активации таймера. То-есть, после того как таймер активирован системным менеджером, он сработает через OnActiveSec секунд. То-есть, допустим, у вас есть неактивный таймер, your.timer
, с заданным параметром OnActiveSec=1.5h
(разумется там могут быть и другие параметры срабатывания, тот-же OnCalendar=
). Вы говорите sudo systemctl start your.timer
и через полтора часа, после этого он сработает. Таким образом хорошо делать одноразовые пользовательские таймеры, запуская их через systemd-run
например когда готовится какая-нибудь еда, а ты сидишь за компом. Например так (от пользователя): systemd-run --user --timer-property=OnActiveSec=40m --unit=kitchen-timer.timer notify-send -u critical -a 'Kitchen Timer' 'Шарлотка сгорит!'
Я бы все-таки подчеркнул разницу между OnActiveSec=
и заданием времени запуска через ``OnCalendar= Просто не совсем понятно зачем откладывать запуск юнита через
OnActiveSec=```...
может быть `cat` заменить на
systemctl cat %unit%
Он сам покажет где файл лежит и все переопределения заодно
Unit-file может в разных местах лежать + раз уж мы про sysytemd говорим
Немного понекропощу, но в статье ошибка и мне опять пришлось убеждать человека что это не правда.
>>> Mon *-12-01/3 — Третий понедельник декабря.
Это ни какой не третий понедельник декабря, это значит следующее:
взять каждый третий день декабря, начиная с 1го числа. И применить условие "Понедельник". Что совпало то совпало.
Systemd для продолжающих. Part 1 — Запуск юнитов по временным событиям