#

Hướng dẫn sử dụng lệnh ps trong Linux qua các ví dụ

 23/07/2022 - 15:00 Trịnh Duy Thanh

Linuxhệ điều hành đa nhiệm có số lượng người dùng rất lớn, do đó cho phép các tiến trình hoạt động đồng thời mà không ảnh hưởng đến nhau. Đối với Linux thì tiến trình rất quan trọng, nó thực thi chương trình với các tác vụ khác nhau trong hệ điều hành.

Linux cung cấp lệnh ps giúp kiểm tra các tiến trình đang hoạt động với PID của nó qua các tùy chọn khác. Nó giúp đọc thông tin tiến trình trong các tệp ảo, proc tệp hệ thống hay proc tệp ảo, … đó cũng là nguyên nhân khiến nó có tên là hệ thống tệp ảo. Trong bài viết này BKHOST sẽ cùng bạn tìm hiểu về các lệnh ps trong Linux.

Ps cung cấp cho người dùng rất nhiều tùy chọn với cú pháp như sau:

Dịch vụ Cloud VPS Giá Rẻ chất lượng cao

BKHOST đang có chương trình khuyến mãi cực shock dành cho khách hàng đăng ký Cloud VPS Giá Rẻ:

  • Giảm giá lên đến 25%.
  • Giá chỉ từ 87k/tháng.
  • Tặng thêm 512MB Ram.

Đăng ký ngay:

vps ssd giá rẻ

Cú pháp - ps [options]

Sử dụng lệnh ps qua ví dụ

lenh ps trong linux

Các tùy chọn lệnh ps với tiến trình

1. Lựa chọn tiến trình đơn giản: Hiển thị tiến trình hiện tại của trình shell

[root@rhel7 ~]# ps
  PID TTY          TIME CMD
12330 pts/0    00:00:00 bash
21621 pts/0    00:00:00 ps

Trong đó:

  • PID – là id của tiến trình
  • TTY – là loại terminal của người dùng
  • TIME – thời gian CPU chạy theo giờ và phút
  • CMD – tên lệnh khởi chạy tiến trình.

Lưu ý: Khi chạy lệnh ps đôi khi bạn thấy thông tin TIME trả về là 00:00:00, điều đó có nghĩa là ở thời điểm hiện tại bên trong không có thời gian CPU nào được tích lũy, do bash làm tiến trình mẹ cho các tiến trình khác được thực thi và nó không sử dụng bất kỳ thời gian nào của CPU.

2. Xem các tiến trình: Sử dụng tùy chọn sau của ps để xem các tiến trình đang chạy

[root@rhel7 ~]# ps -A
[root@rhel7 ~]# ps -e

3. Xem các tiến trình không được liên kết với terminal: Dùng tùy chọn sau để xem các tiến trình không liên kết với terminal và dẫn đầu phiên:
[root@rhel7 ~]# ps -a
  PID TTY          TIME CMD
27011 pts/0    00:00:00 man
27016 pts/0    00:00:00 less
27499 pts/1    00:00:00 ps

Lưu ý: Bạn có thể hiểu session leader là một phiên duy nhất được dùng cho mọi nhóm tiến trình, nó khởi động tất cả các quá trình khác. process ID của phiên đầu tiên sẽ tương tự như ID của phiên.

4. Xem tất cả các tiến trình ngoại trừ session leaders:

[root @ rhel7 ~] # ps -d

5. Xem tất cả các tiến trình ngoại trừ những tiến trình đáp ứng các điều kiện được chỉ định:

Ví dụ – Bạn chỉ muốn xem trình session leader và các tiến trình không được liên kết với terminal, dùng lệnh sau:

[root@rhel7 ~]# ps -a -N
OR
[root@rhel7 ~]# ps -a --deselect

6. Xem tất cả các tiến trình được liên kết với terminal:
[root @ rhel7 ~] # ps -T

7. Xem tất cả các tiến trình đang chạy:
[root @ rhel7 ~] # ps -r

8. Xem tất cả các tiến trình do bạn sở hữu: Là các tiến trình mà người thực thi lệnh ps là root.
[root @ rhel7 ~] # ps -x

Xử lý lựa chọn theo danh sách

Ở đây chúng ta sẽ thảo luận về cách lấy danh sách các tiến trình cụ thể với sự trợ giúp của lệnh ps. Các tùy chọn này chấp nhận một đối số dưới dạng danh sách được phân tách bằng dấu cách hoặc được phân tách bằng dấu phẩy. Chúng có thể được sử dụng nhiều lần.

Ví dụ: ps -p “1 2” -p 3,4

1. Chọn tiến trình bằng tên lệnh: Lệnh này giúp liệt kê các tiến trình có tên trong cmdlist. Khi dùng lệnh này bạn có thể không biết id của tiến trình, tuy nhiên việc tìm kiếm cũng khá dễ dàng.

Cú pháp: ps -C command_name

Ví dụ :

[root@rhel7 ~]# ps -C dhclient
  PID TTY          TIME CMD
19805 ?        00:00:00 dhclient

2. Chọn theo ID hoặc tên nhóm: Lệnh này dùng ID để xác định nhóm người dùng tạo tiến trình.

Cú pháp:

ps -G group_name
ps --Group group_name

Ví dụ :
[root@rhel7 ~]# ps -G root

3. Xem theo id nhóm

Cú pháp:

ps -g group_id
ps -group group_id

Ví dụ:
[root@rhel7 ~]# ps -g 1
  PID TTY          TIME CMD
    1 ?        00:00:13 systemd

4. Xem tiến trình theo ID tiến trình.

Cú pháp:

ps p process_id
ps -p process_id
ps --pid process_id

Ví dụ:
[root@rhel7 ~]#  ps p 27223
  PID TTY      STAT   TIME COMMAND
27223 ?        Ss     0:01 sshd: root@pts/2

[root@rhel7 ~]#  ps -p 27223
  PID TTY          TIME CMD
27223 ?        00:00:01 sshd

[root@rhel7 ~]#  ps --pid 27223
  PID TTY          TIME CMD
27223 ?        00:00:01 sshd

Để xem nhiều tiến trình, bạn có thể chỉ định nhiều ID cùng lúc và phân tách nó bằng dấu cách hoặc dấu phẩy.

Ví dụ:

[root@rhel7 ~]#  ps -p 1 904 27223
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:13 /usr/lib/systemd/systemd --switched-root --system --d
  904 tty1     Ssl+   1:02 /usr/bin/X -core -noreset :0 -seat seat0 -auth /var/r
27223 ?        Ss     0:01 sshd: root@pts/2

Câu lệnh trên đã dùng 3 ID tiến trình là 1, 904 và 27223 phân tách bằng dấu cách.

Bạn có thể xem các tiến trình được sở hữu bởi tiến trình mẹ bằng cách chỉ định ID của tiến trình mẹ trong câu lệnh sau:

[root@rhel7 ~]# ps -p 766
  PID TTY          TIME CMD
  766 ?        00:00:06 NetworkManager

[root@rhel7 ~]# ps --ppid 766
  PID TTY          TIME CMD
19805 ?        00:00:00 dhclient

Ví dụ trên cho thấy tiến trình mẹ là NetworkManager có ID 766 và tiến trình được sở hữu là dhclient có ID là 19805.

5. Xem tất cả các tiến trình thuộc về bất kỳ ID phiên nào.

Cú pháp:

ps -s session_id
ps --sid session_id

Thí dụ:
[root@rhel7 ~]# ps -s 1248
  PID TTY          TIME CMD
 1248 ?        00:00:00 dbus-daemon
 1276 ?        00:00:00 dconf-service
 1302 ?        00:00:00 gvfsd
 1310 ?        00:00:00 gvfsd-fuse
 1369 ?        00:00:00 gvfs-udisks2-vo
 1400 ?        00:00:00 gvfsd-trash
 1418 ?        00:00:00 gvfs-mtp-volume
 1432 ?        00:00:00 gvfs-gphoto2-vo
 1437 ?        00:00:00 gvfs-afc-volume
 1447 ?        00:00:00 wnck-applet
 1453 ?        00:00:00 notification-ar
 1454 ?        00:00:02 clock-applet

6. Chọn theo tty: Này liệt kê các tiến trình liên kết với tty:

Cú pháp:

ps t tty
ps -t tty
ps - tty tty

Ví dụ :
[root@rhel7 ~]# ps -t pts/0
  PID TTY          TIME CMD
31199 pts/0    00:00:00 bash
31275 pts/0    00:00:00 man
31280 pts/0    00:00:00 less

7. Chọn theo tên hoặc ID người dùng hiệu quả

Cú pháp:

ps U user_name / ID
ps -U user_name / ID
ps -u user_name / ID
ps –User user_name / ID
ps –user user_name / ID

8. Sử dụng -f để xem danh sách định dạng đầy đủ
[tux@rhel7 ~]$ ps -af
tux      17327 17326  0 12:42 pts/0    00:00:00 -bash
tux      17918 17327  0 12:50 pts/0    00:00:00 ps -af

9. Sử dụng -F để xem định dạng bổ sung đầy đủ
[tux@rhel7 ~]$ ps -F
UID        PID  PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
tux      17327 17326  0 28848  2040   0 12:42 pts/0    00:00:00 -bash
tux      17942 17327  0 37766  1784   0 12:50 pts/0    00:00:00 ps -F

10. Xem quá trình theo định dạng do người dùng xác định

Cú pháp:

[root @ rhel7 ~] # ps - format column_name
[root @ rhel7 ~] # ps -o column_name
[root @ rhel7 ~] # ps o column_name

Ví dụ:
[root@rhel7 ~]#  ps -aN --format cmd,pid,user,ppid
CMD                           PID USER      PPID
/usr/lib/systemd/systemd --     1 root         0
[kthreadd]                      2 root         0
[ksoftirqd/0]                   3 root         2
[kworker/0:0H]                  5 root         2
[migration/0]                   7 root         2
[rcu_bh]                        8 root         2
[rcu_sched]                     9 root         2
[watchdog/0]                   10 root         2

Các đối số cmd, pid, user, ppid sẽ tương ứng với lệnh, id tiến trình, tên người dùng và id tiến trình mẹ.

11. Xem định dạng điều khiển công việc BSD

[root@rhel7 ~]# ps -j
  PID  PGID   SID TTY          TIME CMD
16373 16373 16373 pts/0    00:00:00 bash
19734 19734 16373 pts/0    00:00:00 ps

12. Hiển thị định dạng dài BSD
[root@rhel7 ~]# ps l
F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
4     0   904   826  20   0 306560 51456 ep_pol Ssl+ tty1       1:32 /usr/bin/X -core -noreset :0 -seat seat0 -auth /var/run/lightdm/root/:0 -noli
4     0 11692 11680  20   0 115524  2132 do_wai Ss   pts/2      0:00 -bash

13. Thêm cột dữ liệu bảo mật
[root@rhel7 ~]# ps -aM
LABEL                                                  PID  TTY    TIME    CMD
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 19534 pts/2 00:00:00 man
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 19543 pts/2 00:00:00 less
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 20469 pts/0 00:00:00 ps

14. Xem lệnh với định dạng tín hiệu
[root @ rhel7 ~] # ps s 766

15. Hiển thị định dạng hướng người dùng
[root@rhel7 ~]# ps u 1
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.6 128168  6844 ?        Ss   Apr08   0:16 /usr/lib/systemd/systemd --switched-root --system --deserialize 21

16. Hiển thị định dạng bộ nhớ ảo
[root@rhel7 ~]# ps v 1
  PID TTY      STAT   TIME  MAJFL   TRS   DRS   RSS %MEM COMMAND
    1 ?        Ss     0:16     62  1317 126850 6844  0.6 /usr/lib/systemd/systemd --switched-root --system --deserialize 21

17. Dùng tùy chọn ** e ** để xem môi trường của bất kỳ lệnh nào
[root@rhel7 ~]# ps ev 766
  PID TTY      STAT   TIME  MAJFL   TRS   DRS   RSS %MEM COMMAND
  766 ?        Ssl    0:08     47  2441 545694 10448  1.0 /usr/sbin/NetworkManager --no-daemon LANG=en_US.UTF-8 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin

18. Xem các tiến trình sử dụng bộ nhớ cao nhất.
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem

19. In một cây tiến trình
[root@rhel7 ~]# ps --forest -C sshd
  PID TTY          TIME CMD
  797 ?        00:00:00 sshd
11680 ?        00:00:03  \_ sshd
16361 ?        00:00:02  \_ sshd

20. Liệt kê tất cả các chủ đề cho một tiến trình cụ thể: Dùng -T hoặc -L để hiển thị các chuỗi của một quá trình.
[root@rhel7 ~]# ps -C sshd -L
  PID   LWP TTY          TIME CMD
  797   797 ?        00:00:00 sshd
11680 11680 ?        00:00:03 sshd
16361 16361 ?        00:00:02 sshd

Tổng kết về lệnh ps trong Linux

Hy vọng thông qua bài viết này, bạn đã hiểu rõ hơn về lệnh ps trong linux thông qua các ví dụ cụ thể. Nếu bạn còn bất cứ thắc mắc gì về lệnh ps, hãy để lại bình luận ở bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.

P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.

Đăng ký tên miền tại BKHOST

BKHOST đang có chương trình khuyến mại cực shock dành cho khách hàng đăng ký mới tên miền.

  • Giảm giá lên đến 70%.
  • Bắt đầu chỉ từ 59k/năm đầu.

Rất nhiều tên miền đẹp đang chờ bạn. Nhanh tay sở hữu ngay hôm nay trước khi đối thủ của bạn nhắm tới.

thuê domain

Tôi là Trịnh Duy Thanh, CEO & Founder Công ty Cổ Phần Giải Pháp Mạng Trực Tuyến Việt Nam - BKHOST. Với sứ mệnh mang tới các dịch vụ trên Internet tốt nhất cho các cá nhân và doanh nghiệp trong nước và quốc tế, tôi luôn nỗ lực hết mình nâng cấp đầu tư hệ thống phần cứng, nâng cao chất lượng dịch vụ chăm sóc khách hàng để đem đến những sản phẩm hoàn hảo nhất cho người tiêu dùng. Vì vậy, tôi tin tưởng sẽ đem đến các giải pháp CNTT mới nhất, tối ưu nhất, hiệu quả nhất và chi phí hợp lý nhất cho tất cả các doanh nghiệp.
Bình luận

Thanh toán linh hoạt

Chúng tôi chấp nhận thanh toán như ATM, Visa, Internet Banking, Paypal, Baokim, Ngân lượng

Gọi ĐT tư vấn ngay
Chat ngay qua Zalo
Chat ngay qua Messenger