NAME¶
loginctl - 控制 systemd
登入管理器
SYNOPSIS¶
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")。