loginctl - 控制 systemd
登录管理器
loginctl [OPTIONS...] {COMMAND} [NAME...]
选项
能够识别的命令行选项如下:
--no-ask-password
在执行特权操作时不向用户索要密码。
-p, --property=
在显示 session/user/seat
属性时,
仅显示此处指定的属性。
若未指定,则显示全部属性。
参数必须是属性名(例如"Sessions")。
可以多次使用此选项以指定多个属性。
--value
在使用 show
显示属性时,
仅显示属性值,而不显示属性名及等号。
-a, --all
在显示 session/user/seat
属性时,
显示全部属性,无论这些属性是否已经被设置。
-l, --full
在显示进程树的时候,不对超长行进行截断。
--kill-who=
与 kill-session
连用,指定杀死哪个进程。
leader
表示仅杀死会话的领导进程;
all
表示杀死会话的所有进程。
默认值为 all
-s, --signal=
与 kill-session 或 kill-user
连用,
指定向选中的进程发送什么信号。
必须设为众所周知的信号名称,例如
SIGTERM(默认值), SIGINT, SIGSTOP
之类
-n, --lines=
与 user-status 或
session-status 连用,
控制显示多少行日志(从最新的一条日志开始计算)。
必须设为一个正整数,默认值是"10"。
-o, --output=
与
user-status 或
session-status 连用,
控制日志的输出格式。
可用值参见
journalctl(1)
手册。 默认为 "short"
-H, --host=
操作指定的远程主机。可以仅指定一个主机名(hostname),
也可以使用 "username@hostname"
格式。 hostname
后面还可以加上容器名(以冒号分隔),
也就是形如 "hostname:container"
的格式,
以表示直接连接到指定主机的指定容器内。
操作将通过SSH协议进行,以确保安全。
可以通过 machinectl -H HOST
命令列出远程主机上的所有容器名称。
-M, --machine=
在本地容器内执行操作。
必须明确指定容器的名称。
--no-pager
不将程序的输出内容管道(pipe)给分页程序。
--no-legend
不输出列标题,
也就是不在输出列表的头部和尾部显示字段的名称。
-h, --help
显示简短的帮助信息并退出。
--version
显示简短的版本信息并退出。
命令
能够识别的命令如下:
会话命令
list-sessions
列出当前所有的会话。这是默认命令。
session-status [ID...]
显示简洁的会话状态信息,后跟最近的日志。
如果指定了会话ID,那么仅显示指定的会话,
否则显示当前调用者的会话。
此命令主要用于输出人类易读的信息,
如果你想输出易于程序分析的信息,
那么应该使用 show-session
命令
show-session [ID...]
如果指定了会话ID,那么显示指定会话的各项属性值,
否则显示登陆管理器自身的各项属性值。
除非使用了 --all 选项,
否则空属性将被忽略。
还可以使用 --property=
选项指定仅显示个别属性。
此命令主要用于输出易于程序分析的信息,
如果你想输出人类易读的信息,
那么应该使用 session-status
命令。
activate [ID]
激活会话。
也就是将处于后台的会话切换到前台(如果同席位的另一个会话正处于前台)。
如果指定了会话ID,
那么将激活指定的会话,
否则将激活当前调用者的会话。
lock-session [ID...], unlock-session
[ID...]
锁定/解锁会话(如果会话支持屏幕锁)。
如果指定了会话ID,那么将锁定/解锁指定的会话,
否则将锁定/解锁当前调用者的会话。
lock-sessions, unlock-sessions
锁定/解锁所有支持屏幕锁的会话。
terminate-session ID...
结束指定的会话。
也就是杀死指定会话的所有进程、释放所有与此会话相关的资源。
kill-session ID...
向指定的会话进程发送信号。
使用 --kill-who=
指定目标进程, 使用
--signal=
指定要发送的信号。
用户命令
list-users
列出当前登录的用户
user-status [USER...]
显示简洁的已登录用户信息,后跟最近的日志。
如果指定了用户名或UID,
那么仅显示指定的用户,
否则显示当前调用者的用户。
此命令主要用于输出人类易读的信息,
如果你想输出易于程序分析的信息,
那么应该使用 show-user
命令。
show-user [USER...]
如果指定了用户名或UID,那么显示指定用户的各项属性值,
否则显示登陆管理器自身的各项属性值。
除非使用了 --all 选项,
否则空属性将被忽略。
还可以使用 --property=
选项来显示指定的属性。
此命令主要用于输出易于程序分析的信息,
如果你想输出人类易读的信息,
那么应该使用 user-status
命令。
enable-linger [USER...], disable-linger
[USER...]
启用/禁止用户逗留(相当于保持登录状态)。
如果指定了用户名或UID,
那么系统将会在启动时自动为这些用户派生出用户管理器,
并且在用户登出后继续保持运行。
这样就可以允许未登录的用户在后台运行持续时间很长的服务。
如果没有指定任何参数,
那么将作用于当前调用者的用户。
参见 logind.conf(5) 中的
KillUserProcesses= 指令。
terminate-user USER...
结束指定用户的所有会话。
这将杀死该用户的所有会话中的所有进程,
同时释放与此用户有关的所有资源。
kill-user USER...
向指定用户的所有进程发送
--signal=
选项指定的信号。
席位命令
list-seats
列出当前本机上的所有可用席位
seat-status [NAME...]
显示简洁的席位信息,后跟最近的日志。
如果指定了席位名,那么仅显示指定的席位,
否则显示当前调用者会话所属的席位。
此命令主要用于输出人类易读的信息,
如果你想输出易于程序分析的信息,
那么应该使用 show-seat
命令。
show-seat [NAME...]
如果指定了席位名,那么显示指定席位的各项属性值,
否则显示登陆管理器自身的各项属性值。
除非使用了 --all 选项,
否则空属性将被忽略。
还可以使用 --property=
选项来显示指定的属性。
此命令主要用于输出易于程序分析的信息,
如果你想输出人类易读的信息,
那么应该使用 seat-status
命令。
attach NAME DEVICE...
将指定的设备(DEVICE)持久的连接到指定的席位(NAME)上。
设备可以用相对于 /sys
文件系统的设备路径表示。
要创建一个新席位,至少需要连接一个显卡。
席位名称必须以 "seat"
开头, 后跟 a–z, A–Z, 0–9,
"-", "_" 字符。
要想从席位上删除一个设备,
可以将此设备连接到另一个席位,
或者使用 flush-devices
命令。
flush-devices
删除所有先前用
attach
命令连接的设备(同时也删除了所有先前用
attach
命令创建的席位)。
调用此命令之后,所有自动生成的席位将会被保留,
同时所有席位设备将会连接到自动生成的席位上。
terminate-seat NAME...
结束指定席位上的所有会话。
这将杀死指定席位上的所有会话进程,
同时释放与之关联的所有资源。
退出状态
返回值为 0
表示成功,
非零返回值表示失败代码。
例子
Example 1. 查询用户状态
$ loginctl user-status
fatima (1005)
Since: Sat 2016-04-09 14:23:31 EDT; 54min ago
State: active
Sessions: 5 *3
Unit: user-1005.slice
├─user@1005.service
...
├─session-3.scope
...
└─session-5.scope
├─3473 login -- fatima
└─3515 -zsh
Apr 09 14:40:30 laptop login[2325]: pam_unix(login:session):
session opened for user fatima by LOGIN(uid=0)
Apr 09 14:40:30 laptop login[2325]: LOGIN ON tty3 BY fatima
有 3 与 5
两个会话。会话 3
是一个图形会话,
以星号(*)标记。同时还显示了两个对应的
scope 单元中的进程树。
环境变量
$SYSTEMD_PAGER
指定分页程序。仅在未指定
--no-pager 选项时有意义。
此变量会覆盖 $PAGER
的值。
将此变量设为空字符串或
"cat" 等价于使用 --no-pager
选项。
$SYSTEMD_LESS
用于覆盖
默认传递给 less
程序的命令行选项
("FRSXMK")。
跋
本页面中文版由中文
man 手册页计划提供。
翻译人员:金步国
金步国作品集:http://www.jinbuguo.com
中文 man
手册页计划:https://github.com/man-pages-zh/manpages-zh