Bài 11. Các lệnh thao tác với tiến trình hệ thống

Trong hệ thống Unix và Linux, tiến trình (process) là một phần quan trọng của quản lý hệ thống. Việc quản lý tiến trình là một phần quan trọng của việc duyệt, kiểm soát và tối ưu hóa sử dụng tài nguyên hệ thống.

Trong bài viết này, chúng ta sẽ tìm hiểu về các lệnh thao tác với tiến trình hệ thống trong Linux.

Mục lục:

  1. Chuẩn bị.
  2. Tìm hiểu về các lệnh thao tác với tiến trình hệ thống trong Linux
  3. Lời kết.

1. Chuẩn bị

  • Đã cài đặt máy ảo Ubuntu trên Oracle VM VirtualBox
  • Đã thực hiện thiết lập SSH tới máy chủ Ubuntu, sẵn sàng nhập lệnh

2. Tìm hiểu về các lệnh thao tác tệp tin và thư mục

- Đầu tiên là các bạn khởi động máy chủ Ubuntu và kết nối với máy chủ thông qua SSH Key như bài trước, ví dụ:

ssh -i ~/.ssh/xboxuser_rsa xboxuser@127.0.0.120

2.1: Hiển thị danh sách tiến trình

- Lệnh "ps" là một công cụ mạnh mẽ để hiển thị danh sách các tiến trình đang chạy trên hệ thống.

- Bạn có thể sử dụng nhiều tùy chọn để tùy chỉnh cách hiển thị thông tin, ví dụ: "ps aux" sẽ hiển thị danh sách tất cả các tiến trình đang chạy cùng với các thông tin như ID, CPU sử dụng, bộ nhớ, v.v.

ps aux

USER: Tên người dùng quản lý tiến trình

PID: Process ID, số định danh duy nhất cho tiến trình.

%CPU: Phần trăm thời gian CPU tiến trình sử dụng,

%MEM: Phần trăm bộ nhớ RAM tiến trình sử dụng

VSZ: Kích thước ảo của tiến trình.

RSS: Kích thước bộ nhớ thực sự được sử dụng.

TTY: Thiết bị đầu cuối mà tiến trình đang gắn kết.

STAT: Trạng thái hiện tại của tiến trình, ví dụ: "Ss" (đang chạy), "S" (đang ngủ), "I" (nghỉ ngơi), "I<" (nghỉ ngơi ưu tiên thấp),..

START: Thời gian bắt đầu của tiến trình.

TIME: Tổng thời gian CPU đã sử dụng bởi tiến trình.

COMMAND: Lệnh hoặc tên của tiến trình, ví dụ: /sbin/init.

2.2: Theo dõi tiến trình thời gian thực

- Lệnh "top" cho phép bạn theo dõi tiến trình thời gian thực và tài nguyên hệ thống.

- Nó cung cấp thông tin về sử dụng CPU, bộ nhớ và hiển thị danh sách tiến trình đang sử dụng tài nguyên nhiều nhất. 

top

PID: Số định danh duy nhất cho tiến trình.

USER: Tên người dùng quản lý tiến trình.

PR: Ưu tiên của tiến trình.

NI: Điểm ưu tiên của tiến trình

 VIRT: Kích thước ảo của tiến trình.

RES: Kích thước bộ nhớ thực sự đã được sử dụng

SHR: Kích thước bộ nhớ được chia sẻ.

S: Trạng thái của tiến trình (Running, Idle, v.v.)

%CPU: Phần trăm thời gian CPU mà tiến trình đang sử dụng

 %MEM: Phần trăm bộ nhớ RAM mà tiến trình đang sử dụng.

TIME+: Tổng thời gian CPU đã sử dụng bởi tiến trình.

COMMAND: Lệnh hoặc tên của tiến trình.

2.3: Kết thúc tiến trình

- Lệnh "kill" được sử dụng để gửi tín hiệu để kết thúc một tiến trình. Ví dụ: "kill -9 <PID>" sẽ kết thúc một tiến trình với ID (Process ID) là PID.

- Ví dụ chúng ta sẽ tạo ra một tiến trình, kiếm tra "pid" của nó, kết thúc nó và kiểm tra lại.

sleep 100 &
ps
kill -9 1273
ps

&: chạy tiến trình với chế độ nền

-9: tùy chọn để buộc kết thúc tiến trình một cách ngay lập tức

1273: "pid" của tiến trình "sleep" mà mình vừa tạo

2.4 Tìm kiếm tiến trình

- Khi bạn cần tìm kiếm một tiến trình khi có quá nhiều tiến trình trong hệ thống. Bạn có thể kết hợp ps với grep để tìm kiếm tiến trình dựa trên tên hoặc các thông tin khác.

ps aux | grep ssh

2.5 Điều khiển tiến trình trong chế độ nền và chế độ chính thức

- Bạn có thể sử dụng bg để đưa một tiến trình vào chế độ nền và fg để chuyển một tiến trình từ chế độ nền về chế độ chính thức.

- Ví dụ tạo ra 1 tiến trình chạy nền và sau đó chuyển tiến trình này sang chạy chính thức (chiếm dụng "Keyboard") và ngược lại

Bước 1:Tạo tiến trình, kiếm tra tiến trình và chuyển đổi tiến trình thứ tự 1 sang chạy chính thức 

sleep 100 &
jobs
fg %1

Bước 2: Tạm dừng tiến trình

- Nhấn tổ hợp phím "Ctrl + Z" để tạm dùng tiến trình

Bước 3: Chuyển đổi tiến trình sang trạng thái nền và kiếm tra

bg %1
jobs

jobs: Kiếm tra trạng thái của tiến trình

%1: tiến trình thứ tự 1

2.6 Điều chỉnh độ ưu tiên

- Sử dụng lệnh "nice" để thiết lập độ ưu tiên cho tiến trình mới. Nếu tiến trình đã bắt đầu chạy, bạn có thể sử dụng "renice" để thay đổi độ ưu tiên.

- Độ ưu tiên sẽ nằm trong khoảng từ -20 đến +19 và mặc định sẽ có giá trị là 0.

- Ví dụ tạo ra một tiến trình với độ ưu tiên là 9 và sau đó chúng ta sẽ thay đổi độ ưu tiên là 0 và kiếm tra lại.

nice -n 9 sleep 1234 &
ps -eo pid,nice,cmd | grep sleep
sudo renice -n 0 -p 1950
ps -eo pid,nice,cmd | grep sleep

-n 9: chỉ định độ ưu tiên là 9

-e: Tùy chọn này hiển thị tất cả các tiến trình, bao gồm cả các tiến trình của tất cả người dùng.

-o: Tùy chọn này cho phép bạn xác định các cột cụ thể mà bạn muốn hiển thị trong đầu ra. Bạn có thể liệt kê các cột mà bạn muốn hiển thị sau "-o".

1950: là "pid" của tiến trình

2.7 Hiển thị cây tiến trình

- Lệnh "pstree" giúp bạn thấy được mối quan hệ giữa các tiến trình dưới dạng cây, giúp bạn hiểu cấu trúc của hệ thống.

pstree

2.8 Kết thúc tất cả tiến trình theo tên

- Lệnh killall cho phép bạn kết thúc tất cả các tiến trình có tên cụ thể. Ví dụ: "killall process_name" sẽ kết thúc tất cả các tiến trình có tên là "process_name".

- Ví dụ chúng ta tạo ra 3 tiến trình "sleep" và sau đó chúng ta sẽ "kill" tất cả tiến trình "sleep" này.

sleep 1111
sleep 2222
sleep 3333
killall sleep

3. Lời kết

- Quản lý tiến trình là một phần quan trọng của quản lý hệ thống và giúp đảm bảo rằng tài nguyên hệ thống được sử dụng hiệu quả. Tuy nhiên, hãy sử dụng các lệnh này một cách cẩn thận để tránh gây thiệt hại cho hệ thống hoặc mất dữ liệu quan trọng.


Tác giả: Đỗ Thiên Giang

Chú ý: Tất cả các bài viết trên TEDU.COM.VN đều thuộc bản quyền TEDU, yêu cầu dẫn nguồn khi trích lại trên website khác.

Lên trên