Lệnh who trong Linux

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:

  1. 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.
  2. Terminal: Terminal hoặc phiên mà người dùng đã đăng nhập, trong trường hợp này là pts/0.
  3. 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.
  4. 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: labextestuser.

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, awkcut.

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.

400+ câu lệnh phổ biến trong Linux