Giới thiệu
Trong lab này, chúng ta sẽ khám phá lệnh who
của Linux, đây là một công cụ mạnh mẽ để hiển thị thông tin về những người dùng hiện đang đăng nhập. Chúng ta sẽ hiểu cách sử dụng cơ bản của lệnh who
, học cách lọc đầu ra của nó và khám phá các trường khác nhau mà nó cung cấp. Lab này bao gồm chủ đề Quản lý Người dùng và Quyền, một kỹ năng thiết yếu để các systemadmin và người dùng hiểu được hoạt động hiện tại trên hệ thống.
Lab này bao gồm ba bước chính: Tìm hiểu Lệnh who
, Khám phá Đầu ra của Lệnh who
và Lọc Đầu ra của Lệnh who
. Thông qua các bước này, bạn sẽ có được sự hiểu biết toàn diện về lệnh who
và các ứng dụng thực tế của nó.
Tìm hiểu Lệnh who
Trong bước này, chúng ta sẽ khám phá lệnh who
, một công cụ mạnh mẽ trong Linux để hiển thị thông tin về những người dùng hiện đang đăng nhập.
Lệnh who
cung cấp thông tin như tên người dùng, terminal, thời gian đăng nhập và host từ xa mà người dùng đã đăng nhập. Thông tin này có thể hữu ích cho các systemadmin và người dùng để hiểu được hoạt động hiện tại trên hệ thống.
Hãy bắt đầu bằng cách chạy lệnh who
:
who
Ví dụ đầu ra:
labex pts/0 2023-04-11 09:15 (172.17.0.1)
Đầu ra cho thấy người dùng labex
đã đăng nhập trên terminal pts/0
, được đăng nhập vào lúc 2023-04-11 09:15
từ host từ xa 172.17.0.1
.
Lệnh who
cũng có thể hiển thị thông tin bổ sung bằng cách sử dụng các tùy chọn khác nhau. Một số tùy chọn phổ biến bao gồm:
who -a
: Hiển thị đầu ra chi tiết hơn, bao gồm thời gian nhàn rỗi và ID tiến trình của shell của người dùng.who -H
: Hiển thị dòng tiêu đề với tên cột.who -q
: Hiển thị danh sách nhanh những người dùng đã đăng nhập, chỉ hiển thị tên người dùng.who am i
: Hiển thị thông tin về người dùng hiện tại.
Hãy thử một số tùy chọn này:
who -a
Ví dụ đầu ra:
labex pts/0 2023-04-11 09:15 00:00 (172.17.0.1)
Tùy chọn -a
hiển thị thời gian nhàn rỗi, là 00:00
trong trường hợp này, cho biết rằng người dùng đang tích cực sử dụng terminal.
who -H
Ví dụ đầu ra:
NAME LINE TIME COMMENT
labex pts/0 2023-04-11 09:15 (172.17.0.1)
Tùy chọn -H
thêm dòng tiêu đề vào đầu ra, giúp bạn dễ dàng hiểu ý nghĩa của từng cột.
who am i
Ví dụ đầu ra:
labex pts/0 2023-04-11 09:15 (172.17.0.1)
Lệnh who am i
hiển thị thông tin về người dùng hiện tại.
Khám phá Đầu ra của Lệnh who
Trong bước này, chúng ta sẽ đi sâu hơn vào đầu ra của lệnh who
và hiểu các trường khác nhau mà nó cung cấp.
Hãy bắt đầu bằng cách chạy lại lệnh who
:
who
Ví dụ đầu ra:
labex pts/0 2023-04-11 09:15 (172.17.0.1)
Đầu ra của lệnh who
bao gồm các trường sau:
- Username: Tên người dùng của người dùng đã đăng nhập, trong trường hợp này là
labex
. - Terminal: Terminal hoặc phiên mà người dùng đã đăng nhập, trong trường hợp này là
pts/0
. - Login Time: Thời gian người dùng đăng nhập, trong trường hợp này là
2023-04-11 09:15
. - Remote Host: Host từ xa mà người dùng đã đăng nhập, trong trường hợp này là
(172.17.0.1)
.
Bây giờ, hãy khám phá các trường này chi tiết hơn:
Username: Trường username hiển thị tên của người dùng hiện đang đăng nhập. Điều này giống với người dùng bạn đang đăng nhập, trong trường hợp này là labex
.
Terminal: Trường terminal hiển thị terminal hoặc phiên mà người dùng đã đăng nhập. Trong một hệ thống Linux điển hình, bạn có thể thấy các giá trị như tty1
, pts/0
, pts/1
, v.v. Chúng đại diện cho các loại terminal hoặc phiên khác nhau.
Login Time: Trường login time hiển thị ngày và giờ người dùng đăng nhập vào hệ thống.
Remote Host: Trường remote host hiển thị địa chỉ IP hoặc tên host của hệ thống từ xa mà người dùng đã đăng nhập. Trong trường hợp này, người dùng đã đăng nhập từ Docker container, vì vậy host từ xa được hiển thị là (172.17.0.1)
.
Hãy thử một ví dụ khác để xem đầu ra thay đổi như thế nào khi nhiều người dùng đăng nhập:
sudo useradd -m testuser
sudo su - testuser
who
Ví dụ đầu ra:
labex pts/0 2023-04-11 09:15 (172.17.0.1)
testuser pts/1 2023-04-11 09:20 (172.17.0.1)
Trong ví dụ này, chúng ta đã tạo một người dùng mới testuser
và chuyển sang người dùng đó. Lệnh who
hiện hiển thị hai người dùng đã đăng nhập: labex
và testuser
.
Lọc Đầu ra của Lệnh who
Trong bước này, chúng ta sẽ học cách lọc đầu ra của lệnh who
để nhận thông tin cụ thể.
Lệnh who
có thể tạo ra rất nhiều đầu ra, đặc biệt là trên một hệ thống có nhiều người dùng. Để lọc đầu ra, chúng ta có thể sử dụng các công cụ dòng lệnh khác nhau, chẳng hạn như grep
, awk
và cut
.
Hãy bắt đầu bằng cách lọc đầu ra để chỉ hiển thị tên người dùng:
who | awk '{print $1}'
Ví dụ đầu ra:
labex
Lệnh awk '{print $1}'
trích xuất trường đầu tiên (tên người dùng) từ đầu ra của lệnh who
.
Tiếp theo, hãy lọc đầu ra để chỉ hiển thị thời gian đăng nhập:
who | awk '{print $4, $5}'
Ví dụ đầu ra:
2023-04-11 09:15
Lệnh awk '{print $4, $5}'
trích xuất trường thứ tư và thứ năm (ngày và giờ đăng nhập) từ đầu ra của lệnh who
.
Bạn cũng có thể sử dụng grep
để lọc đầu ra dựa trên các tiêu chí cụ thể. Ví dụ: để chỉ hiển thị những người dùng đã đăng nhập từ một host từ xa cụ thể:
who | grep '(172.17.0.1)'
Ví dụ đầu ra:
labex pts/0 2023-04-11 09:15 (172.17.0.1)
Lệnh grep '(172.17.0.1)'
lọc đầu ra để chỉ hiển thị các dòng chứa chuỗi (172.17.0.1)
, đại diện cho host từ xa.
Đây chỉ là một vài ví dụ về cách bạn có thể lọc đầu ra của lệnh who
. Bạn có thể kết hợp các kỹ thuật này để nhận được thông tin cụ thể bạn cần.
Tóm tắt
Trong lab này, chúng ta đã khám phá lệnh who
trong Linux, đây là một công cụ mạnh mẽ để hiển thị thông tin về những người dùng hiện đang đăng nhập. Chúng ta đã học được rằng lệnh who
cung cấp các chi tiết như tên người dùng, terminal, thời gian đăng nhập và host từ xa mà người dùng đã đăng nhập. Chúng ta cũng đã khám phá các tùy chọn khác nhau có thể được sử dụng với lệnh who
để tùy chỉnh đầu ra, chẳng hạn như hiển thị chế độ xem chi tiết hơn, thêm dòng tiêu đề hoặc chỉ hiển thị tên người dùng. Ngoài ra, chúng ta đã học cách sử dụng lệnh who am i
để hiển thị thông tin về người dùng hiện tại.