首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >进程id到loginctl会话id

进程id到loginctl会话id
EN

Unix & Linux用户
提问于 2018-09-18 09:48:21
回答 1查看 7.5K关注 0票数 4

我有一个“小”问题:)

如果我运行命令

代码语言:javascript
复制
loginctl list-session

我将得到的输出将有列会话,uid,用户和座位。所以我在这里有一个会议,c6,c2,c4等等。

另外,我有一个带有某些id的进程,我想知道它在哪个会话中运行?

例如

代码语言:javascript
复制
cat /proc//sessionid

将返回一些类似于4294967295的数字,这与loginctl会话完全不同。

现在我的主要问题是:如何从进程id获得loginctl会话id。

是的,我知道我可以做这个

代码语言:javascript
复制
ps aux | grep -i  | awk '{print $1}'

获取用户,然后将该用户映射到loginctl并获得会话id.但我不认为这是正确的解决办法。例如,loginctl中是否只有一个UserA实例?因为我可以看到lightdm (x显示管理器)的实例很少,并且我无法确定哪个会话id是正确的。

是的,我将在C++ (c++11)中实现这一点,因此我也将接受c++答案:)

谢谢。

你好,格鲁比奇

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-09-18 11:34:28

您是否尝试将ID从/proc/pid/sessionid传递给loginctl show-session ID,但在我的示例中,它显示了sam数字。

代码语言:javascript
复制
someuser@somemachine-test ~ $ cat /proc/self/sessionid
9293

someuser@somemachine-test ~ $ loginctl list-sessions
   SESSION        UID USER             SEAT
      9293      10002 someuser

1 sessions listed.
someuser@somemachine-test ~ $ loginctl show-session 9293
Id=9293
User=10002
Name=someuser
Timestamp=Tue 2018-09-18 13:24:08 CEST
TimestampMonotonic=3614939245544
VTNr=0
Remote=yes
RemoteHost=172.21.98.41
Service=sshd
Scope=session-9293.scope
Leader=8290
Audit=9293
Type=tty
Class=user
Active=yes
State=active
IdleHint=no
IdleSinceHint=0
IdleSinceHintMonotonic=0
LockedHint=no

我也可以找到它的名字:

代码语言:javascript
复制
someuser@somemachine-test ~ $ cat /proc/self/cgroup
11:pids:/
10:memory:/user.slice
9:freezer:/
8:hugetlb:/
7:devices:/
6:cpuacct,cpu:/user.slice
5:blkio:/
4:perf_event:/
3:cpuset:/
2:net_prio,net_cls:/
1:name=systemd:/user.slice/user-10002.slice/session-9293.scope

对于c++,有系统中的DBus接口和C库标清_登录。但不幸的是我没有这方面的经验。

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

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

复制
相关文章

相似问题

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