Mục lục [Ẩn]
Hệ điều hành Linux đi kèm với lệnh hủy để chấm dứt một quy trình. Lệnh này giúp bạn có thể tiếp tục chạy máy chủ mà không cần phải khởi động lại sau một thay đổi/cập nhật lớn. Đây là sức mạnh tuyệt vời của Linux và đây là một trong những lý do, tại sao Linux đang chạy trên 96,4% máy chủ trên hành tinh.
Lệnh Kill gửi một tín hiệu, một tín hiệu được chỉ định đến một tiến trình hiện đang chạy. Lệnh Kill có thể được thực thi theo một số cách, trực tiếp hoặc từ một tập lệnh shell.
Sử dụng lệnh Kill từ /usr/bin cung cấp cho bạn một số tính năng bổ sung để hủy một quy trình theo tên quy trình bằng Pkill.
Hủy bỏ cách sử dụng lệnh
Cú pháp chung cho lệnh Kill là:
# kill [signal or option] PID(s)
Đối với một lệnh Kill một tên tín hiệu có thể là:
Signal Name Signal Value Behaviour
SIGHUP 1 Hangup
SIGKILL 9 Kill Signal
SIGTERM 15 Terminate
Rõ ràng từ hành vi ở trên, SIGTERM là cách mặc định và an toàn nhất để hủy một tiến trình. SIGHUP là một cách diệt quy trình kém an toàn hơn so với SIGTERM. SIGKILL là cách không an toàn nhất trong số ba cách trên, để giết một quá trình kết thúc một quá trình mà không lưu.
Để kết thúc một quy trình, chúng ta cần biết ID quy trình của một quy trình. Một quá trình là một thể hiện của một chương trình. Mỗi khi một chương trình bắt đầu, tự động một PID duy nhất được tạo cho quá trình đó.
Mọi quy trình trong Linux đều có một PID. Quá trình đầu tiên bắt đầu khi Hệ thống Linux được khởi động là quá trình init, do đó nó được gán giá trị '1' trong hầu hết các trường hợp.
Init là quy trình chính và không thể bị hủy theo cách này, điều này đảm bảo rằng quy trình chính không vô tình bị hủy. Init quyết định và tự cho phép mình bị hủy, nơi hủy chỉ đơn thuần là yêu cầu tắt máy.
Liệt kê tất cả các quá trình Linux đang chạy
Để biết tất cả các quá trình và được chỉ định tương ứng với PID của chúng, hãy chạy lệnh ps sau.
# ps -A
PID TTY TIME CMD
1 ? 00:00:01 init
2 ? 00:00:00 kthreadd
3 ? 00:00:00 migration/0
4 ? 00:00:00 ksoftirqd/0
5 ? 00:00:00 migration/0
6 ? 00:00:00 watchdog/0
7 ? 00:00:01 events/0
8 ? 00:00:00 cgroup
9 ? 00:00:00 khelper
10 ? 00:00:00 netns
11 ? 00:00:00 async/mgr
12 ? 00:00:00 pm
13 ? 00:00:00 sync_supers
14 ? 00:00:00 bdi-default
15 ? 00:00:00 kintegrityd/0
16 ? 00:00:00 kblockd/0
17 ? 00:00:00 kacpid
18 ? 00:00:00 kacpi_notify
19 ? 00:00:00 kacpi_hotplug
20 ? 00:00:00 ata/0
21 ? 00:00:00 ata_aux
22 ? 00:00:00 ksuspend_usbd
Làm thế nào về Tùy chỉnh đầu ra ở trên bằng cách sử dụng cú pháp là 'quá trình pidof'.
# pidof mysqld
Kết quả mẫu
1684
Một cách khác để đạt được mục tiêu trên là làm theo cú pháp dưới đây.
# ps aux | grep mysqld
Đầu ra mẫu
root 1582 0.0 0.0 5116 1408 ? S 09:49 0:00
/bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql
--socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid
--basedir=/usr --user=mysql
mysql 1684 0.1 0.5 136884 21844 ? Sl 09:49 1:09
/usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql
--log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid
--socket=/var/lib/mysql/mysql.sock
root 20844 0.0 0.0 4356 740 pts/0 S+ 21:39
0:00 grep mysqld
Cách hủy quy trình trong Linux
Trước khi chúng ta thực hiện lệnh Kill, một số điểm quan trọng cần lưu ý:
Người dùng có thể hủy tất cả các quy trình của mình.
Người dùng không thể giết tiến trình của người dùng khác.
Người dùng không thể giết các quy trình mà Hệ thống đang sử dụng.
Người dùng root có thể giết tiến trình cấp hệ thống và quy trình của bất kỳ người dùng nào.
Một cách khác để thực hiện chức năng tương tự là thực hiện lệnh 'pgrep'.
# pgrep mysql
Đầu ra mẫu
3139
Để loại bỏ quá trình trên của PID, hãy sử dụng lệnh Kill như được hiển thị.
kill -9 3139
Lệnh trên sẽ hủy quá trình có pid=3139, trong đó PID là giá trị số của quá trình.
Một cách khác để thực hiện cùng một chức năng có thể được viết lại thành.
# kill -SIGTERM 3139
Tương tự 'kill -9 PID' tương tự như 'kill -SIGKILL PID' và ngược lại.
Cách hủy một tiến trình trong Linux bằng cách sử dụng tên tiến trình
Bạn phải biết về tên tiến trình, trước khi hủy và nhập sai tên tiến trình có thể khiến bạn khó chịu.
# pkill mysqld
Hủy nhiều quá trình cùng một lúc
# kill PID1 PID2 PID3
or
# kill -9 PID1 PID2 PID3
or
# kill -SIGKILL PID1 PID2 PID3
Điều gì xảy ra nếu một quá trình có quá nhiều cá thể và một số quá trình con, chúng ta có lệnh 'Killall' hoặc Pkill. Hai lệnh này là các lệnh duy nhất của họ này, lấy tên tiến trình làm đối số thay cho số tiến trình.
Cú pháp
# killall [signal or option] Process Name
Hoặc
# pkill Process Name
Để loại bỏ tất cả các cá thể MySQL cùng với các process con, hãy sử dụng lệnh như sau.
# killall mysqld
HOẶC
# pkill mysqld
Bạn luôn có thể xác minh trạng thái của quá trình nếu nó đang chạy hay không, bằng cách sử dụng bất kỳ lệnh nào dưới đây.
# service mysql status
OR
# systemctl status mysql
# pgrep mysql
# ps -aux | grep mysql
Đó là tất cả tất cả những gì tôi biết ở thời điểm hiện tại. Tôi sẽ sớm quay lại đây với một chủ đề thú vị và thông tin khác. Cho đến khi đó, hãy theo dõi, kết nối với Tecmint. Đừng quên đưa ra phản hồi có giá trị của bạn trong phần bình luận.
+ Fanpage: https://www.facebook.com/nhanhoacom
+ Chỉ đường: https://g.page/nhanhoacom
+ Chương trình khuyến mãi mới nhất: https://nhanhoa.com/khuyen-mai.html
————————————————————
CÔNG TY TNHH PHẦN MỀM NHÂN HÒA
Hotline: 1900 6680
Trụ sở chính: Tầng 4 - Tòa nhà 97-99 Láng Hạ, Đống Đa, Hà Nội
Tel: (024) 7308 6680 – Email: sales@nhanhoa.com
Chi nhánh TP. Hồ Chí Minh: 270 Cao Thắng (nối dài), Phường 12, Quận 10, Tp.HCM
Tel: (028) 7308 6680 – Email: hcmsales@nhanhoa.com
Chi nhánh Vinh - Nghệ An: Tầng 2 Tòa nhà Sài Gòn Sky, ngõ 26 Nguyễn Thái Học, phường Đội Cung, TP. Vinh, Nghệ An
Tel: 0915221384 – Email: contact@nhanhoa.com