在Linux中,每个终端只与一个会话相关联(一个会话有一个或多个进程组,一个进程组有一个或多个进程)。是否有某个函数(或命令)接受tty设备文件(例如:/dev/tty1或/dev/pts/0)并返回与此tty/terminal关联的会话id?
/dev/tty1
/dev/pts/0
xxe27gdn1#
执行以下步骤:
stat
major*256+minor
/proc/
pid
/proc/pid/stat
sid
pgrp
vdzxcuhz2#
By Mohit BATRA =每次打开一个终端,都会启动一个新的会话,并为其分配一个唯一的会话ID。如果我们需要找到与每个终端关联的会话ID,则可以通过= ps命令,和By = tty命令,我们可以找到终端类型或编号,并获得会话I'我们需要再打开终端两次,并使用= tty检查它的终端号,然后运行
ps
tty
ps -exo sess,tty | grep pts/1
这里pts/1是我的终端号,我通过在终端上运行命令= tty得到的,这在你的情况下是不同的,只要注意你的并粘贴在grep之后,你就会得到那个会话的会话ID。
2条答案
按热度按时间xxe27gdn1#
执行以下步骤:
stat
您要检查的TTY。特别是,找出它正在使用的主/次设备ID。使用公式major*256+minor
将它们组合成一个数字(或仅取stat
的原始数字)1.打开
/proc/
并扫描名称仅为数字的所有目录。该目录的名称是系统中某个进程的pid
。1.对于每个这样的目录,打开
/proc/pid/stat
,并将文件解析为以空格分隔的字段(第二个字段除外,它周围有括号)。第7个字段将是TTY设备的主/次。扫描,直到找到与您正在查找的TTY匹配的TTY。1.该文件中的第6个字段是进程的
sid
(您要查找的数字)。第8个字段是TTY的pgrp
。文件结构在这里详细说明。
vdzxcuhz2#
By Mohit BATRA =每次打开一个终端,都会启动一个新的会话,并为其分配一个唯一的会话ID。如果我们需要找到与每个终端关联的会话ID,则可以通过=
ps
命令,和By =tty
命令,我们可以找到终端类型或编号,并获得会话I'我们需要再打开终端两次,并使用= tty检查它的终端号,然后运行这里pts/1是我的终端号,我通过在终端上运行命令= tty得到的,这在你的情况下是不同的,只要注意你的并粘贴在grep之后,你就会得到那个会话的会话ID。