linux会话session

linux会话

什么是linux session

我们常见的 Linux session 一般是指 shell session。Shell session 是终端中当前的状态,在终端中只能有一个 session。 当我们打开一个新的终端时,总会创建一个新的 shell session。这表明会话是我们和shell交互的一个过程。

就进程间的关系来说,session 由一个或多个进程组组成。一般情况下,来自单个登录的所有进程都属于同一个 session。

会话是由会话中的第一个进程创建的,一般情况下是打开终端时创建的 shell 进程。该进程也叫 session 的领头进程。Session 中领头进程的 PID 也就是 session 的 SID。

$ ps -o pid,ppid,pgid,sid,tty,comm

在这里插入图片描述

总结:session就是一组进程的集合,session id就是这个session中leader的进程ID。

在这里插入图片描述
Session 中的每个进程组被称为一个 job,有一个 job 会成为 session 的前台 job(foreground),其它的 job 则是后台 job(background)。

一般情况下 session 和终端是一对一的关系,当我们打开多个终端窗口时,实际上就创建了多个 session。

Session 的意义在于多个工作(job)在一个终端中运行,其中的一个为前台 job,它直接接收该终端的输入并把结果输出到该终端。其它的 job 则在后台运行。

支持 job control 的 shell 必须能够控制在某一时刻由哪个 job 使用终端。否则,可能会有多个 job 试图同时从终端读取数据,这会导致进程在接收用户输入时的混乱。为了防止这种情况发生,shell 必须按照预定的协议与终端驱动程序协作。

shell 一次只允许一个 job(进程组)访问控制终端。 来自控制终端的某些输入会导致信号被发送到与控制终端关联的 job(进程组)中的所有进程。该 job 被称为控制终端上的前台 job。由 shell 管理的其他 job 在不访问终端的情况下,被称为后台 job。

通常,新的 session 由系统登录程序创建,session 中的领头进程是运行用户登录 shell 的进程。

新创建的每个进程都会属于一个进程组,当创建一个进程时,它和父进程在同一个进程组、session 中。

将进程放入不同 session 的惟一方法是使用 setsid 函数使其成为新 session 的领头进程。这还会将 session 领头进程放入一个新的进程组中。

当 session 中的所有进程都结束时 session 也就消亡了。

session 与终端的关系

如果 session 关联的是伪终端,这个伪终端本身就是随着 session 的建立而创建的,session 结束,那么这个伪终端也会被销毁。

如果 session 关联的是 tty1-6,tty 则不会被销毁。因为该终端设备是在系统初始化的时候创建的,并不是依赖该会话建立的,所以当 session 退出,tty 仍然存在。

系统的进程管理不允许有脱单的进程,即任何进程都必须要属于某个组,某个会话。

会话是由多个进程组构成的,进程组是由多个进程构成的。

一个 session 可以有一个控制终端, 通俗意义讲我们 ssh 远程连接到终端, 其实就是创建了一个终端. 但是一个 session 中最多只能有一个进程组在前台运行, 也就是连接上终端后对你的终端输入输出进行管控的那个进程组. 但我们在终端敲入一个中断信号的符号时, e.g. Ctrl+c, 这个中断信号就会发送给这个进程组的所有进程成员。

每一个进程都隶属于独一无二的进程组中. 当子进程创建后, 与父进程就同属于一个进程组中, 进程组用进程组 ID 进行识别.

启动deamon进程,这类进程需要和父进程划清界限,所以需要启动一个新的session。

进程组组长

  • 每个进程除了有一进程ID之外,还属于一个进程组
  • 进程组是一个或多个进程的集合
  • 每个进程组有一个组长进程。组长进程的进程组ID等于其进程ID
  • 进程组组长可以创建一个进程组,创建该组中的进程,然后终止
  • 只要在某个进程组中有 一个进程存在,则该进程组就存在,这与其组长进程是否终止无关
  • 进程组组长可以使用setpgid函数创建

每个进程组有一个唯一的进程组ID。进程组ID是一个正整数,用pid_t数据类型表示

getpgrp函数
功能:返回调用该函数的进程的进程组ID

getpgid函数
功能:返回参数pid进程的进程组ID
如果参数为0,则返回调用此函数的进程组ID。此时getpgid(0)函数等同于getpgrp()函数

获取会话首进程的进程组ID(getsid函数)

  • Single UNIX Specification只说明了会话首进程,而没有会话ID这个概念
  • 所以,可以将会话首进程的进程ID视为会话ID
  • 功能:getsid函数返回参数所指向的进程所在的会话的会话首进程的进程组ID(因为会话首进程总是一个进程组的组长,所以返回的进程组ID与首进程ID是相同的)
  • 通常:一个进程的会话ID是登录shell的ID(登录shell是一个会话的会话首进程 )

nohup

Linux session(会话)
参考URL: https://www.cnblogs.com/sparkdev/p/12146305.html

如果我们在 session 中执行了 nohup 等类似的命令,当 session 消亡时,相关的进程并不会随着 session 结束,原因是这些进程不再受 SIGHUP 信号的影响。

如果我们在 session 中执行了 nohup 等类似的命令,当 session 消亡时,相关的进程并不会随着 session 结束,原因是这些进程不再受 SIGHUP 信号的影响。

setsid

Linux session(会话)
参考URL: https://www.cnblogs.com/sparkdev/p/12146305.html

setsid 会创建一个新的 session,它的目的是让进程在后台执行命令,实现方式就是让命令进程运行在一个新的与终端脱离的 session 中。看下面的示例:

setsid 会创建一个新的 session,它的目的是让进程在后台执行命令,实现方式就是让命令进程运行在一个新的与终端脱离的 session 中。

当一个进程通过调用 setsid 成为一个新的 session 领头进程时,它会与控制终端断开连接。

会话相关常用命令

使用tty命令,查看本会话的会话号:

[root@dev workspace]# tty
/dev/pts/0
[root@dev workspace]#

使用w 命令,查看当前有哪些会话登录在服务器上。

[root@dev workspace]# w17:34:57 up 5 days,  6:43,  1 user,  load average: 0.00, 0.01, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    121.19.37.12    17:23    1.00s  0.03s  0.00s w
[root@dev workspace]#

打印sid

ps -o pid,ppid,pgid,sid,comm

在ssh会话中查找客户机的IP地址

  1. 检查是否存在名为:
    $SSH_CLIENT 或 $SSH_CONNECTION
$ echo $SSH_CLIENT | awk '{ print $1}'
1.2.3.4
$ echo $SSH_CONNECTION | awk '{print $1}'
1.2.3.4
  1. pinky 命令
    您可以使用以下命令:
    Pinky将显示所有登录用户,而不仅仅是您自己。
pinky

参考

APUE第9章 进程关系、进程组、会话
参考URL: https://www.jianshu.com/p/ebe67c991394
Linux session(会话)
参考URL: https://www.cnblogs.com/sparkdev/p/12146305.html
What is the definition of a “session” in linux?
Linux session和进程组概述
Job Control
Linux TTY/PTS概述
setsid source code
Linux session和进程组概述
参考URL: https://segmentfault.com/a/1190000009152815
Linux——会话(session)
参考URL: https://blog.csdn.net/shenmingxueIT/article/details/108130764

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1620190.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

session是什么

前言: 今天就来彻底的学一些session是个啥东西,我罗列了几个需要知道的要点: 1.session 是啥? 2.怎么保存的? 3.如何运行? 4.有生命周期吗? 5.关闭浏览器会过期吗? 6.Redis代替文件存…

Session是什么东西

虽然经常做的C,Web 写的少,但是这个知识在面试中经常遇到,现在就记录一下。 Web的三个概念: Session 、 cookie、 application。 Session 和 Cookie 功能效果是差不多的,区别就是session 是记录在服务端的,Cookie是记…

Python—Session

python中session()是干什么作用的_session是什么意思 Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储…

彻底弄清楚session是什么?

前言: 今天就来彻底的学一些session是个啥东西,我罗列了几个需要知道的要点: 1.session 是啥? 2.怎么保存的? 3.如何运行? 4.有生命周期吗? 5.关闭浏览器会过期吗? 6.redis代替文…

浅谈 Cookie 和 Session

理解Cookie理解Session核心方法案例-网页登录1. 编写一个简单的登录页面2. 编写一个 Servlet 来处理这个登录请求3. 编写服务器返回主页的逻辑4. 启动服务器验证 Cookie 和 Session 区别 理解Cookie 在前面的 HTTP 协议中,也理解过这个 Cookie,HTTP 协议自身是属于 “无状态”…

session是什么?

目录: 1.session 是啥? 2.怎么保存的? 3.如何运行? 4.有生命周期吗? 5.关闭浏览器会过期吗? 6.Redis代替文件存储session 7.分布式session的同步问题 session是啥? 首先,我大致的…

什么是session?

最近在学习node.js 的express框架,接触到了关于session方面的内容。翻阅了一些的博客,学到了不少东西,发现一篇博文讲的很好,概念内容摘抄如下: Session是什么 Session一般译作会话,牛津词典对其的解释是…

session的到底是做什么的?

前言: 今天就来彻底的学一些session是个啥东西,我罗列了几个需要知道的要点: 1.session 是啥? 2.怎么保存的? 3.如何运行? 4.有生命周期吗? 5.关闭浏览器会过期吗? 6.Redis代替文…

Session(超详细)

Session 会话 1.什么是 Session 会话? Session 就一个接口(HttpSession)。Session 就是会话。它是用来维护一个客户端和服务器之间关联的一种技术。每个客户端都有自己的一个 Session 会话。Session 会话中,我们经常用来保存用户登录之后的…

Session详解(重点)

什么是Session: (1)服务器会给每一个用户(浏览器)创建一个Session对象 比如我们现在都去访问百度,我们使用双核浏览器和谷歌浏览器同时访问百度这个网址,百度那边会有两个session,因为浏览器不一样&#x…

Session原理

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术:Java,HTTP协议,session原理 撰写时间:2019-06-17 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~…

Session详解

Session(重点) 什么是Session: 服务器会给每一个用户(浏览器)创建一个Session对象一个Session独占一个浏览器,只要浏览器没有关闭,这个Session就存在用户登陆之后,整个网站它都可以访问–>保存用户的信…

Session详解,学习Session,这篇文章就够了(包含底层分析和使用)

说明:下面介绍session,我们使用到了游览器抓包,http的知识,如果不了解,请先简单了解下。http介绍,http请求,http响应。因为cookie和session是一对”好兄弟“,我们介绍session也要使用…

移动端VIN码识别技术的出现,为汽配供应链带来便捷

汽配供应链作为汽车后市场一大蓝海,成为众多商家的“必争之地”。在现今人工智能大数据的大环境下,拥抱科技,运用人工智能技术构建智能化数据平台成为提升企业行业竞争力的首选。 VIN码即车架号就是汽车的唯一的身份证,汽车从下线…

harrier 查看查看服务器状态,机油尺检查细节多多,嘉普力汽配工场教你如何正确查看机油尺...

平常我们总是说烧机油、机油消耗、机油增多,很多车主都快得"机油恐惧症"了,时刻担心自己的机油出现问题。既然担心就要查机油,那么你会看机油尺吗?今天,嘉普力汽配工场就教车主朋友们如何正确查看机油尺。 机…

汽车汽配行业B2B电子商务系统营销渠道自动化,综合提升B2B平台交易效率

汽车工业作为国家制造业的支柱之一,是衡量国家工业水平的基本指标。不断完善汽车工业整体的行业规范,促进汽车工业更稳定、更健康的发展,才能有效提升汽车工业的经济作用及影响力。 4S店模式,作为我国一直以来最主要的汽车销售模…

数商云采购系统对账结算功能介绍 | 缩短汽配企业结算周期,提高资金周转效率

近年来随着市场饱和度增加、竞争加剧,特别是信息技术的广泛发展,造成相当程度的平衡打破,使得通过平台化提升汽配供应链整体效率并建立主体间信任的可塑性增强,汽配供应链迎来新的变局。 作为名副其实的中小企业,汽配…

《汽修汽配管理系统——“汽修管理”模块》项目研发阶段性总结

完成模块功能:汽修管理(预约维修,客户接待,售后服务) 一、 功能实现 汽修管理主要包括预约维修,客户接待,售后服务 预约维修见图一, 该页面可查看老客户的资料,也可对第…

汽车汽配行业智慧供应链系统:提升企业效率,构建SCM平台数字化优势

过去几年,中国汽车产业经历了快速的发展阶段,已经成为全球最大的汽车市场。其中,汽车产业链、供应链有序、畅通的运转对中国汽车行业保持健康平稳发展起到了重要的支撑作用。随着新一轮技术革命到来,中国汽车供应链正面临着无限的…

汽车汽配行业经销商协同系统:实现汽配经销商销售管理全流程数字化

汽车经销商是从事汽车交易,取得汽车所有权的中间商。对于汽车制造企业而言,经销商是重要的资源,如何占有更多的经销商,是决定汽车企业市场开拓能力及成败的关键。随着国内汽车市场的竞争愈加激烈,汽车企业想要站稳脚跟…