Lệnh killall trong Linux

Giới thiệu

Trong lab này, bạn sẽ học cách sử dụng lệnh killall trong Linux để kết thúc các tiến trình theo tên hoặc người dùng. Lệnh killall là một công cụ mạnh mẽ để quản lý tiến trình, cho phép bạn nhanh chóng và hiệu quả kết thúc nhiều tiến trình cùng một lúc.

Bạn sẽ hiểu rõ cách sử dụng cơ bản của lệnh killall, bao gồm cách kết thúc các tiến trình theo tên và theo người dùng. Sau đó, bạn sẽ khám phá các ví dụ thực tế về việc sử dụng lệnh killall để quản lý các tiến trình đang chạy trên hệ thống của bạn. Lab này sẽ cung cấp cho bạn kiến thức và kỹ năng để kiểm soát và quản lý hiệu quả các tiến trình trên hệ điều hành dựa trên Linux của bạn.

Tìm hiểu lệnh killall

Trong bước này, bạn sẽ tìm hiểu về lệnh killall trong Linux, cho phép bạn kết thúc các tiến trình theo tên. Lệnh killall là một công cụ mạnh mẽ để quản lý tiến trình, cho phép bạn nhanh chóng và hiệu quả kết thúc nhiều tiến trình cùng một lúc.

Đầu tiên, hãy khám phá cách sử dụng cơ bản của lệnh killall:

sudo killall process_name

Lệnh trên sẽ kết thúc tất cả các tiến trình với process_name được chỉ định. Ví dụ: để kết thúc tất cả các phiên bản của tiến trình firefox, bạn có thể chạy:

sudo killall firefox

Ví dụ đầu ra:

firefox: no process found

Trong ví dụ này, vì không có tiến trình firefox nào đang chạy, lệnh đã trả về thông báo "no process found".

Lệnh killall cũng hỗ trợ nhiều tùy chọn để tùy chỉnh hành vi của nó. Một số tùy chọn phổ biến bao gồm:

  • -i: Hỏi trước khi kết thúc mỗi tiến trình
  • -q: Chế độ im lặng, không xuất bất kỳ thông báo lỗi nào
  • -u: Kết thúc các tiến trình thuộc sở hữu của người dùng được chỉ định
  • -s: Gửi tín hiệu được chỉ định thay vì SIGTERM (mặc định)

Ví dụ: để kết thúc tất cả các tiến trình thuộc sở hữu của người dùng labex, bạn có thể chạy:

sudo killall -u labex

Ví dụ đầu ra:

[sudo] password for labex:

Lệnh killall là một công cụ mạnh mẽ để quản lý tiến trình, cho phép bạn kết thúc nhiều tiến trình theo tên hoặc người dùng. Trong bước tiếp theo, bạn sẽ học cách sử dụng lệnh killall trong các tình huống thực tế hơn.

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

Trong bước này, bạn sẽ học cách sử dụng lệnh killall để kết thúc các tiến trình theo tên của chúng.

Đầu tiên, hãy bắt đầu một vài tiến trình nền mà chúng ta có thể sử dụng cho ví dụ này:

sleep 1000 &
sleep 2000 &
sleep 3000 &

Bây giờ, bạn có thể sử dụng lệnh killall để kết thúc các tiến trình này theo tên:

sudo killall sleep

Ví dụ đầu ra:

sleep: no process found

Ôi, có vẻ như các tiến trình sleep đã kết thúc. Hãy bắt đầu lại chúng và thử kết thúc chúng:

sleep 1000 &
sleep 2000 &
sleep 3000 &
sudo killall sleep

Ví dụ đầu ra:

sleep: no process found

Hmm, có vẻ như lệnh killall không hoạt động như mong đợi. Điều này là do lệnh killall tìm kiếm các tên tiến trình chính xác và trong trường hợp này, tên tiến trình không chỉ là "sleep", mà còn bao gồm cả các đối số của tiến trình (ví dụ: "sleep 1000").

Để kết thúc các tiến trình này, chúng ta có thể sử dụng ID tiến trình (PID) thay thế:

pids=$(pgrep sleep)
sudo kill $pids

Ví dụ đầu ra:

Tuyệt vời! Các tiến trình sleep đã bị kết thúc.

Lệnh killall là một công cụ mạnh mẽ, nhưng điều quan trọng là phải hiểu rằng nó tìm kiếm các tên tiến trình chính xác. Nếu tên tiến trình bao gồm các đối số, bạn có thể cần sử dụng các phương pháp thay thế, chẳng hạn như pgrepkill, để kết thúc các tiến trình.

Kết thúc tiến trình theo người dùng

Trong bước này, bạn sẽ học cách sử dụng lệnh killall để kết thúc các tiến trình dựa trên người dùng sở hữu chúng.

Đầu tiên, hãy bắt đầu một số tiến trình nền với tư cách là người dùng labex:

sudo -u labex sleep 1000 &
sudo -u labex sleep 2000 &
sudo -u labex sleep 3000 &

Bây giờ, bạn có thể sử dụng lệnh killall với tùy chọn -u để kết thúc tất cả các tiến trình thuộc sở hữu của người dùng labex:

sudo killall -u labex

Ví dụ đầu ra:

sleep: no process found

Ôi, có vẻ như các tiến trình sleep đã kết thúc. Hãy bắt đầu lại chúng và thử kết thúc chúng:

sudo -u labex sleep 1000 &
sudo -u labex sleep 2000 &
sudo -u labex sleep 3000 &
sudo killall -u labex

Ví dụ đầu ra:

sleep: no process found

Tuyệt vời! Lệnh killall với tùy chọn -u đã kết thúc thành công tất cả các tiến trình thuộc sở hữu của người dùng labex.

Lệnh killall có thể là một công cụ mạnh mẽ để quản lý các tiến trình dựa trên người dùng sở hữu chúng. Điều này đặc biệt hữu ích trong các tình huống mà bạn cần kết thúc tất cả các tiến trình thuộc về một người dùng cụ thể, chẳng hạn như khi tài khoản của người dùng đang bị hủy kích hoạt hoặc người dùng không còn được phép chạy một số tiến trình nhất định.

Tóm tắt

Trong lab này, bạn đã học về lệnh killall trong Linux, cho phép bạn kết thúc các tiến trình theo tên. Bạn đã khám phá cách sử dụng cơ bản của lệnh killall và cách kết thúc các tiến trình theo tên. Bạn cũng đã học cách kết thúc các tiến trình thuộc sở hữu của một người dùng cụ thể và cách tùy chỉnh hành vi của lệnh killall bằng cách sử dụng các tùy chọn khác nhau. Cuối cùng, bạn đã thực hành sử dụng lệnh killall để kết thúc nhiều tiến trình theo tên.

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