一,loginctl的用途:

控制 systemd 登录管理器

管理当前登录的用户和session

说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

对应的源码可以访问这里获取: https://github.com/liuhongdi/

说明:作者:刘宏缔 邮箱: 371125307@qq.com

二,查看loginctl所属的包及安装

1,查看所属的rpm包

[root@blog ~]# whereis loginctl
loginctl: /usr/bin/loginctl /usr/share/man/man1/loginctl.1.gz [root@blog ~]# rpm -qf /usr/bin/loginctl
systemd-239-18.el8_1.4.x86_64

2,如果找不到loginctl命令,可以用yum安装

[root@blog ~]# yum install systemd

三,查看loginctl的版本和帮助

1,查看版本

[root@blog ~]# loginctl --version
systemd 239
+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT
+UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4
+SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=legacy

2,查看帮助

[root@blog ~]# loginctl --help 

四,loginctl在使用时需要systemd-logind.service开启

[root@redis local]# loginctl list-sessions
Failed to list-sessions: Unit systemd-logind.service is masked.
[root@redis local]# systemctl start systemd-logind.service
Failed to start systemd-logind.service: Unit systemd-logind.service is masked.

如果服务被mask,需要先取消mask再start

[root@redis local]# systemctl unmask systemd-logind.service
Removed /etc/systemd/system/systemd-logind.service.
[root@redis local]# systemctl start systemd-logind.service

五,loginctl 使用例子之一:session操作

1,列出本机所有的session

# 只执行loginctl 和loginctl list-sessions效果一样,

# list-sessions是 loginctl的默认操作

[root@blog ~]# loginctl list-sessions
SESSION UID USER SEAT TTY
974 1000 webop
975 1000 webop 2 sessions listed.

说明:可以看到:同一个用户可以开启多个session

2,显示一个session的详细信息

[root@blog ~]# loginctl show-session 974
Id=974
User=1000
Name=webop
Timestamp=Thu 2020-04-09 14:14:21 CST
TimestampMonotonic=7791035206379
VTNr=0
Remote=yes
RemoteHost=43.243.12.116
Service=sshd
Scope=session-974.scope
Leader=31899
Audit=974
Type=tty
Class=user
Active=yes
State=active
IdleHint=no
IdleSinceHint=0
IdleSinceHintMonotonic=0
LockedHint=no

3,显示一个session的状态:

#session-status: session状态,指定一个session id,

#可以看到这个session开启的进程等信息

[root@blog ~]# loginctl session-status 975

4,结束指定的session

即:杀死指定会话的所有进程、释放所有与此会话相关的资源

先列出所有的session

[root@blog ~]# loginctl list-sessions
SESSION UID USER SEAT TTY
974 1000 webop
975 1000 webop

上面可以看到975这个session

#terminate-session 结束指定的session

[root@blog ~]# loginctl terminate-session 975

再次列出当前的session

[root@blog ~]# loginctl list-sessions
SESSION UID USER SEAT TTY
974 1000 webop

已经看不到975了

此时我们从975这个session的终端可以看到:

[SSH] INFO: DISCONNECT

5,kill-session  杀死session

与terminate session基本相同,但可以指定发送的信号

如果不加参数,则signal为SIGTERM

[root@blog ~]# loginctl kill-session 976

976终端上的提示

[SSH] INFO: DISCONNECT

指定的session已经结束

如果指定SIGSTOP,则session没有退出,但用户的终端会停止响应

[root@blog ~]# loginctl kill-session 980 --signal=SIGSTOP

man参考:

 -s, --signal=
When used with kill-session or kill-user, choose which signal to send to selected processes.
Must be one of the well known signal specifiers, such as SIGTERM,
SIGINT or SIGSTOP. If omitted, defaults to SIGTERM.

6,如何查看自己的tty?

[root@blog ~]$ tty
/dev/pts/0

配合session-status即可找到自己的session id

[webop@blog ~]$ loginctl session-status 983
983 - webop (1000)
Since: Thu 2020-04-09 16:22:44 CST; 1min 53s ago
Leader: 821 (sshd)
Remote: 43.243.12.116
Service: sshd; type tty; class user
State: active
Unit: session-983.scope
├─821 sshd: webop [priv]
├─823 sshd: webop@pts/0
├─824 -bash
├─870 loginctl session-status 983
└─871 less Apr 09 16:22:44 blog systemd[1]: Started Session 983 of user webop.

可以看到自己的session id是983

六,loginctl 使用例子之二:user操作

1,列出所有用户

[root@blog ~]# loginctl list-users
UID USER
1000 webop 1 users listed.

2,查看当前登录用户的详细信息:

[root@blog ~]# loginctl show-user webop
UID=1000
GID=1000
Name=webop
Timestamp=Thu 2020-04-09 13:00:09 CST
TimestampMonotonic=7786582389261
RuntimePath=/run/user/1000
Service=user@1000.service
Slice=user-1000.slice
Display=974
State=active
Sessions=983 974
IdleHint=no
IdleSinceHint=0
IdleSinceHintMonotonic=0
Linger=no

3,查看登录用户的状态

[root@blog ~]# loginctl user-status webop
webop (1000)
Since: Thu 2020-04-09 13:00:09 CST; 3h 29min ago
State: active
Sessions: 983 *974
Linger: no
Unit: user-1000.slice
├─session-974.scope
│ ├─ 902 loginctl user-status webop
│ ├─ 903 less
│ ├─31899 sshd: webop [priv]
│ ├─31902 sshd: webop@pts/1
│ ├─31904 -bash
│ ├─31932 sudo -i
│ └─31933 -bash
├─session-983.scope
│ ├─821 sshd: webop [priv]
│ ├─823 sshd: webop@pts/0
│ └─824 -bash
└─user@1000.service
└─init.scope
├─31746 /usr/lib/systemd/systemd --user
└─31749 (sd-pam) Apr 09 14:14:29 blog sudo[31932]: pam_systemd(sudo-i:session): Cannot create session: Already running in a session or user slice
Apr 09 14:14:29 blog sudo[31932]: pam_unix(sudo-i:session): session opened for user root by webop(uid=0)
Apr 09 15:23:43 blog sshd[31740]: pam_unix(sshd:session): session closed for user webop
Apr 09 15:37:43 blog sshd[32339]: pam_unix(sshd:session): session closed for user webop
...

4,结束指定用户的所有session

[root@blog ~]# loginctl terminate-user webop 

5,停止用户的终端

[webop@blog ~]$ loginctl kill-user webop --signal=SIGSTOP

七,查看centos版本

[root@blog ~]# cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core)

centos8平台使用loginctl管理登录用户与session的更多相关文章

  1. Spark项目之电商用户行为分析大数据平台之(六)用户访问session分析模块介绍

    一.对用户访问session进行分析 1.可以根据使用者指定的某些条件,筛选出指定的一些用户(有特定年龄.职业.城市): 2.对这些用户在指定日期范围内发起的session,进行聚合统计,比如,统计出 ...

  2. centos8平台使用journalctl管理systemd-journald日志

    一,systemd-journald的作用 1,什么是systemd-journald? systemd-journald 是 systemd 自带的日志系统,是一个收集并存储各类日志数据的系统服务. ...

  3. centos8平台使用rpm管理软件包

    一,什么是rpm rpm是redhat package manager redhat的软件包管理器 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/a ...

  4. centos8平台使用parted管理分区

    一,parted的用途 parted是GNU发布的强大的分区工具, parted命令可以划分单个分区大于2T的GPT格式的分区,也可以划分普通的MBR分区. 因为fdisk命令对于大于2T的分区无法划 ...

  5. Xianfeng轻量级Java中间件平台:权限管理

    权限管理:是通过系统对用户的行为进行控制的一套业务规则,可以做得很简单,比如通过硬编码的方式进行控制,也可以做得很复杂,比如通过一些复杂的权限模型去实现一些复杂的权限控制,比如菜单访问权限.按钮操作权 ...

  6. ThreadLocal管理登录信息

    通常在项目中,用户登录后,我们会将用户的信息存到session,如果想在其它地方获取session中的用户信息,我们需要先获取HttpServletRequest,再通过request.getSess ...

  7. Linux下查看/管理当前登录用户及用户操作历史记录

    转载自: http://www.cnblogs.com/gaojun/archive/2013/10/24/3385885.html 一.查看及管理当前登录用户 1.使用w命令查看登录用户正在使用的进 ...

  8. C#开发微信门户及应用(41)--基于微信开放平台的扫码登录处理

    在现今很多网站里面,都使用了微信开放平台的扫码登录认证处理,这样做相当于把身份认证交给较为权威的第三方进行认证,在应用网站里面可以不需要存储用户的密码了.本篇介绍如何基于微信开放平台的扫码进行网站的登 ...

  9. SNF快速开发平台2019-权限管理模型-记录级-字段级权限实践

    1.1.1  字段级权限 字段级权限适用于对不同人的能否查看或录入不同表不同字段的权限控制. 是否启用字段级权限配置 不启用字段级权限后,[用户权限管理]程序[字段级权限]按钮会隐藏,导致无法给管理其 ...

随机推荐

  1. 居然仅用浏览器,就完成了Spring Boot应用的开发与部署!

    最近有幸试用了一下阿里云的一个新产品:云开发平台,体验一把全新的开发模式!虽然中间也碰到了一些问题,但整体的体验透露着未来感,因为整个过程都不需要使用我们最常用的IDEA,仅依靠浏览器就把一个Spri ...

  2. matplotlib | Python强大的作图工具,让你从此驾驭图表(二)

    今天是数据处理专题的第10篇文章,我们继续来聊聊matplot这个工具库. 在上周的文章当中我们介绍了matplot的基本用法,以及展示了一些简单的例子,让大家直观地了解这个工具包.我们可以简单地将它 ...

  3. 为什么安装了MinGW之后,还是不能在Matlab中使用mex?

    原文地址:http://blog.sina.com.cn/s/blog_53c7b1580102xjcw.html 老版本的Matlab自带lcc,在Matlab中输入mex -setup就可以选择. ...

  4. 4.CountDownLatch-闭锁

  5. 疑难杂症 | Excel VBA锁定指定单元格区域

    背景:锁定EXCEL表头 一.手动操作流程 其基本逻辑并不赋值,手动操作流程是: 1.取消所有单元格的"锁定"格式 CTRL+A,选中全部的单元格→单击右键→设置单元格格式→保护→ ...

  6. web自动化(python)——selenium工具基本使用

    WebDriver基本操作 生成driver--启动浏览器 #启动谷歌浏览器,预先安装chromedrvier插件 from selenium import webdriver driver = we ...

  7. cnpm install 报错

    报错如图所示,请观下文 1,npm cache clean --force 2,进入文件,rm -rf node_modules/ ---- 暴力直接

  8. python中闭包详解

    谈谈自己的理解:python中闭包,闭包的实质   闭包这个概念好难理解,身边朋友们好多都稀里糊涂的,稀里糊涂的林老冷希望写下这篇文章能够对稀里糊涂的伙伴们有一些帮助~ 请大家跟我理解一下,如果在一个 ...

  9. 后端开发实践:Spring Boot项目模板

    在我的工作中,我从零开始搭建了不少软件项目,其中包含了基础代码框架和持续集成基础设施等,这些内容在敏捷开发中通常被称为"第0个迭代"要做的事情.但是,当项目运行了一段时间之后再来反 ...

  10. 永久改变cmd背景颜色

    问题描述:cmd窗口为白底黑字,用久之后想换背景颜色. 解决方法一: win+R 输入regedis进入注册表,找到 HKEY_CURRENT_USER\Software\Microsoft\Comm ...