Pull to refresh

Comments 23

Хм. Такими темпами я свой vimonised на systemd перепишу)
Что там можно в systemd засунуть?
Там сейчас костылём сделан таймер на отчистку «списка замороженных окон»; внутри демона. Вот его и можно, это будет намного точнее и аккуратнее отсчёта 300 циклов работы)
Можно даже будет попытаться снабдить каждое окно своим таймером, но это уже лишнее наверное.
Это кусок функционала undo у меня, если что.
Ну тогда отдельный *.target делай, что-б бардак не разводить и запускать/останавливать можно было скопом.
Дай я логику сначала добью)
А тогда уже буду костыли убирать. Мне сейчас ещё надо с лексикой разобраться…
Большой плюс текущей версии в краткости, большинство самых частых команд укладываются в два нажатия. А в новой я вроде как реализовал чисто вимовское verb+noun+указатель, но теперь всё занимает три нажатия. И если в среднем норм, то, к примеру, в плеере это раздражает ( Do Player Next вместо Player Next).

Вот и думаю, как его сделать

Очевидный плюс крона: "все расписания конкретного пользователя в одном месте", уведомления на почту, если что-то пошло не так
Очевидный минус — в статье описано: куча мест, где может быть расписание (/etc/crontab, /etc/cron.d/, /var/spool/cron), cron не понимает нужно ли было стартовать сервис, если сервер был выключен, сложно строить гибкие расписания (приходится дублировать строчки).


Очевидный плюс timers — они сильно более продвинутые, на них можно сделать все
Минусы — иногда приходится писать x2 набор юнитов (*.timer, *.service), но это плата за гибкость


В статье еще не хватает команд для "показать список всех таймеров" и "время их следующего срабатывания" (если что — это не analyze вроде) — в кроне такого нет )))

В статье еще не хватает команд для «показать список всех таймеров» и «время их следующего срабатывания» (если что — это не analyze вроде) — в кроне такого нет )))

Спасибо, Что-то совсем из головы вылетело. Сейчас добавлю!
уведомления на почту, если что-то пошло не так


Для систем без почтового сервера плюс так себе. Ошибки толком нигде не пишутся и их надо выуживать из системного лога.

По-моему, по сравнению с 0 частью статья потеряла лаконичность.


Опишите, пожалуйста, в одной из будущих статей всё разнообразие триггеров. Коротко и без подробного вникание в каждый тип.

где-ж эти статьи были в середине прошлого года?
но я горд — почти всё сделал и как выясняется без костылей!
спасибо, с огромным удовольствием прочитал и жду продолжения.
Ну, на самом деле, аналог at можно сделать на основе проекта systemd-cron, возможно даже форкнув его и запросив PR в основной проект. Состояние юнитов в systemd-run не сохраняется между перезагрузками. Эта штука только для рантайма.

зачем это все, если есть systemd-timers?

Для пакетов, вендоры которых добавляют *.cron файлы, например. Кровавое легаси и это вот всё. Но от at я-б не отказался, например… но с systemd-шным синтаксисом задания времени, разумеется. И возможностью задания systemd-шных же параметров. Вообще странно, что в systemd не реализован cli интерфейс к таймерам. Какой-нить условный timerctl. А то systemctl list-timers Уж очень ограничен по функционалу. Кстати systemd-cron грамотно так реализован, всё по *.target-ам раскидано, например.
После прочтения статьи так и не понял, что означает параметр OnActiveSec.
Ммм… Да, немного неудачно сформулировал. 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=```...

Ну вот, например, для одноразовых таймеров. Я немного переформатировал статью. Вынес логически близкие OnBoot / OnStartup / OnActiveSec в «событийные» таймеры, заодно поправил одну ошибку. У меня вместо OnUnitActiveSec= стояло просто OnActiveSec=
Спасибо за статью

может быть `cat` заменить на
systemctl cat %unit%


Он сам покажет где файл лежит и все переопределения заодно
Unit-file может в разных местах лежать + раз уж мы про sysytemd говорим

Немного понекропощу, но в статье ошибка и мне опять пришлось убеждать человека что это не правда.

>>> Mon *-12-01/3 — Третий понедельник декабря.

Это ни какой не третий понедельник декабря, это значит следующее:

взять каждый третий день декабря, начиная с 1го числа. И применить условие "Понедельник". Что совпало то совпало.

спасибо, очень интересное замечание

Sign up to leave a comment.

Articles