Systemd/Пользовательские сервисы

From NixOS Wiki
Revision as of 16:55, 5 August 2024 by Unabomberlive (talk | contribs) (Created page with "Systemd поддерживает запуск отдельного экземпляра systemd для конкретного пользователя, позволяя ему управлять своими собственными службами.")

Systemd поддерживает запуск отдельного экземпляра systemd для конкретного пользователя, позволяя ему управлять своими собственными службами. В NixOS пользовательский сервис может быть выражен с помощью systemd.user.services.<name>, как описано здесь: https://search.nixos.org/options?query=systemd.user.services. Это может быть полезно, если вы хотите, чтобы пользователь мог запускать, останавливать и перезапускать свой собственный экземпляр службы без необходимости делать его sudoer. Пример сервиса:

systemd.user.services.my-cool-user-service = {
  enable = true;
  after = [ "network.target" ];
  wantedBy = [ "default.target" ];
  description = "Мой Классный Пользовательский Сервис";
  serviceConfig = {
      Type = "simple";
      ExecStart = ''/my/cool/user/service'';
  };
};

По умолчанию пользовательские сервисы будут остановлены, когда пользователь выйдет из системы, и запустятся снова, когда пользователь снова войдет в систему, благодаря тому, что мы установили wantedBy = ["default.target" ] в примере.

Продолжение работы пользовательских служб после выхода из системы

Если вам нужно, чтобы пользовательский сервис продолжал работать после выхода пользователя из системы, вам нужно включить "lingering", установив users.users.<username>.linger = true;. Вы также, вероятно, захотите изменить wantedBy = ["multi-user.target" ];, чтобы служба запускалась во время загрузки.