Продолжаем ковырять systemd

Для того чтобы потыкать systemd, не обязательно обладать рутовскими правами или судой-мудой. Да, ты не ослышался, всё можно запускать под обычным юзером.

Делается это так:

systemctl --user enable bashdays.timer

Ключ --user означает, что команда применяется в пользовательском пространстве, а не на уровне всей системы.

Теперь этот юнит будет запускаться каждый раз при старте пользовательской сессии, а таймер начнёт тикать.

Эта штука создаёт символическую ссылку в ~/.config/systemd/user/ в директории default.target.wants/.

Если тебе нужно разово запустить такой юнит, то enable меняем на start. Вот и вся наука.

А как отлаживать?

1. Сначала нужно убедиться, что таймер активен:

systemctl --user status bashdays.timer

Если всё ок, то увидишь Active: active (waiting).

2. Смотрим расписание запуска

systemctl --user list-timers
  • NEXT — когда следующий запуск;
  • LEFT — сколько осталось времени;
  • LAST — когда запускался в прошлый раз;
  • UNIT — имя таймера.

3. Проверяем, выполнялся ли сервис

journalctl --user-unit bashdays.service --since "1 hour ago"

Команда покажет логи выполнения скрипта. Можно сузить диапазон, например так:

journalctl --user-unit bashdays.service --since today

По дебагу это основное. Мелочи вроде синтаксических ошибок и т. п. рассматривать не будем, тут уже от кривизны рук всё зависит.

Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
Ну а так всё, что нужно тебе знать. То есть у каждого пользователя могут быть свои юниты и сервисы, а не только у рута.