首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在会话范围内启动服务(或目标)?

如何在会话范围内启动服务(或目标)?
EN

Unix & Linux用户
提问于 2019-03-26 08:43:40
回答 1查看 2.3K关注 0票数 5

我使用systemd启动桌面会话的大部分进程: xmonad (窗口管理器)、emacs守护进程、tmux会话等等。

因此,使用loginctl user-status列出我的用户进程只会显示会话下的少数进程:

代码语言:javascript
运行
复制
  Unit: user-1000.slice
        ├─session-5.scope
        │ ├─4740 lightdm --session-child 13 16
        │ ├─5047 systemctl --user --wait start xmonad-systemd-session.target
        │ └─5497 /usr/bin/ssh-agent /usr/bin/im-launch xmonad-systemd-session
        └─user@1000.service

几乎我的所有进程都在user@1000.service下面的会话之外运行。这意味着在tmux上运行loginctl session-status会给出:

代码语言:javascript
运行
复制
Could not get properties: Caller does not belong to any known session

我想告诉systemd在特定的登录会话下启动某些服务。理想情况下,在我的会话启动脚本中,我会编写:

代码语言:javascript
运行
复制
exec systemctl --user --wait \
    --scope $MY_DESKTOP_SESSION start xmonad-systemd-session.target

但是,没有--scope选项,我也不知道如何获得作用域名称。

我使用libpam-systemd和dbus-user会话在Debian-ish (内部)发行版上运行systemd 240。

EN

回答 1

Unix & Linux用户

发布于 2020-06-24 12:54:52

我不确定systemd是否允许在已经包含进程的作用域中提供服务。根据控制组接口文档,一个作用域或服务不能同时具有进程和其他作用域/服务。(实际上,它说片只包含服务和作用域,服务和作用域包含进程。但我的系统似乎没有遵循这些文档,因为我在用户@1000服务中有服务。)

您可以在会话范围内运行进程,方法是让进程从会话中的某个部分启动。在Gnome中,命令是从Alt+F2启动的,或者是从xterm (但不是gnome终端,它作为自己的服务运行)在会话范围内运行的。我不知道有什么其他方法可以在一个范围内获得一个进程。另见

对我来说,很明显,有时您希望在会话中有一个服务(也就是说,如果会话被杀死了,那么有多个副本,如果您有多个会话),所以如果不存在,我希望它能够在某个时候构建。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/508684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档