会话 ID 在 pkill 上下文中意味着什么?

会话 ID 在 pkill 上下文中意味着什么?

关于该pkill命令,我知道可以杀死进程 - for具体场景- 基于通过tty[1-6]pts/[0-N].我测试并按预期工作。到这里一切都好。

但现在,根据这个答案和解决方案:

它表明(提取):

pkill 和killall 也是kill 系统调用的包装器(实际上是直接调用系统调用的libc 库),但可以根据进程名称、进程所有者等信息确定PID。会话ID, ETC。

观察会话ID部分。我确实检查了两者man,并且仅存在此功能以pkill符合以下任一条件:

分别如下:

-s sid,...
Only match processes whose process session ID is listed. 
Session ID 0 is translated into pgrep's or pkill's own session ID.

-s, --session sid,...
Only match processes whose process session ID is listed. 
Session ID 0 is translated into pgrep's or pkill's own session ID.

正如您所看到的,内容是相同的,只是选项/参数名称略有不同。

如果我使用:

  • 直接控制台,因此可以使用pkill它来tty[1-6]杀死某些东西
  • 通过远程连接ssh,因此可以使用pkill它来pts/[0-N]杀死某些东西。

发这个帖子的原因:

问题

  • 什么是会话ID意思是在pkill上下文中?

额外问题

  • 怎么样?会话ID创建?
  • 如何知道/检索列表会话 ID用于pkill

答案1

会话 ID 是进程会话的标识符。会话是一个与 shell 作业控制相关的概念,其级别高于进程组;给定会话中的所有进程共享同一个控制终端。在非图形环境中,会话可以被认为是登录会话(至少,这是最初想法的一部分;它们不能与在基于 systemd 的环境中跟踪登录会话的 systemd 会话混淆)。

会话是通过调用创建的setsid;也可以看看他们的描述在man credentials。这些链接指向特定于 Linux 的文档,但这不是特定于 Linux 的;也可以看看POSIX 规范setsid

ps可以显示会话 ID:

ps -eo pid,sess,args

相关内容