Systemd/User Services/ru: Difference between revisions

From NixOS Wiki
Unabomberlive (talk | contribs)
Created page with "<syntaxhighlight lang="nix"> systemd.user.services.my-cool-user-service = { enable = true; after = [ "network.target" ]; wantedBy = [ "default.target" ]; description = "Мой Классный Пользовательский Сервис"; serviceConfig = { Type = "simple"; ExecStart = ''/my/cool/user/service''; }; }; </syntaxhighlight>"
FuzzyBot (talk | contribs)
Updating to match new version of source page
 
(9 intermediate revisions by one other user not shown)
Line 1: Line 1:
<div lang="en" dir="ltr" class="mw-content-ltr">
{{Systemd/breadcrumb}}
Systemd supports running a separate instance of systemd for a given user, allowing the user to control their own services. See here for more information: https://wiki.archlinux.org/title/Systemd/User
 
</div>
Systemd поддерживает запуск отдельного экземпляра systemd для конкретного пользователя, позволяя ему управлять своими собственными службами.
<div lang="en" dir="ltr" class="mw-content-ltr">
В NixOS пользовательский сервис может быть выражен с помощью {{ic|systemd.user.services.<name>}}, как описано здесь: https://search.nixos.org/options?query=systemd.user.services.
In NixOS, a user service can be expressed with {{ic|systemd.user.services.<name>}}, as documented here: https://search.nixos.org/options?query=systemd.user.services
Это может быть полезно, если вы хотите, чтобы пользователь мог запускать, останавливать и перезапускать свой собственный экземпляр службы без необходимости делать его sudoer.
</div>
Пример сервиса:
<div lang="en" dir="ltr" class="mw-content-ltr">
This may be useful if you want a user to be able to start, stop, and restart their own instance of a service without needing to make the user a sudoer.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Here is an example:
</div>
<syntaxhighlight lang="nix">
<syntaxhighlight lang="nix">
systemd.user.services.my-cool-user-service = {
systemd.user.services.my-cool-user-service = {
Line 23: Line 17:
};
};
</syntaxhighlight>
</syntaxhighlight>
<div lang="en" dir="ltr" class="mw-content-ltr">
По умолчанию пользовательские сервисы будут остановлены, когда пользователь выйдет из системы, и запустятся снова, когда пользователь снова войдет в систему, благодаря тому, что мы установили {{ic|<nowiki>wantedBy = ["default.target" ]</nowiki>}} в примере.
By default, user services will be stopped when the user logs out and will start again when the user logs back in due to us setting {{ic|<nowiki>wantedBy = [ "default.target" ]</nowiki>}} in the example.
<span id="Keeping_user_services_running_after_logout"></span>
</div>
== Продолжение работы пользовательских служб после выхода из системы ==
<div lang="en" dir="ltr" class="mw-content-ltr">
Если вам нужно, чтобы пользовательский сервис продолжал работать после выхода пользователя из системы, вам нужно включить "[https://search.nixos.org/options?channel=unstable&show=users.users.%3Cname%3E.linger&from=0&size=50&sort=relevance&type=packages&query=users.users.%3Cname%3E.linger lingering]", установив {{ic|<nowiki>users.users.<username>.linger = true;</nowiki>}}.
== Keeping user services running after logout ==
Вы также, вероятно, захотите изменить {{ic|<nowiki>wantedBy = ["multi-user.target" ];</nowiki>}}, чтобы служба запускалась во время загрузки.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you need a user service to stay running after a user logs out, you need to enable "[https://search.nixos.org/options?channel=unstable&show=users.users.%3Cname%3E.linger&from=0&size=50&sort=relevance&type=packages&query=users.users.%3Cname%3E.linger lingering]" by setting {{ic|<nowiki>users.users.<username>.linger = true;</nowiki>}}
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
You'll also likely want to change to {{ic|<nowiki>wantedBy = [ "multi-user.target" ];</nowiki>}} so the service starts at boot time.
</div>
[[Category:systemd]]
[[Category:systemd]]

Latest revision as of 08:29, 8 August 2024

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" ];, чтобы служба запускалась во время загрузки.