3 ví dụ về lệnh Kill trên Centos / Ubuntu / Debian / Fedora
Hệ điều hành Linux đi kèm với lệnh kill để kết thúc một quá trình. Lệnh này giúp tiếp tục chạy máy chủ mà không cần khởi động lại sau một thay đổi/cập nhật quan trọng. Đây là một trong những lý do tuyệt vời của Linux và 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.
Kill gửi một tín hiệu, tín hiệu được chỉ định tới một quá trình đang chạy. Đồng thời, lệnh này có thể được thực hiện theo nhiều cách, trực tiếp hoặc từ một script 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 để kết thúc một quá trình theo tên quá trình bằng cách sử dụng pkill.
Cú pháp cơ bản của lệnh kill
Cú pháp chung của lệnh kill:
# kill [signal or option] PID(s)
Trong lệnh kill, 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 để kết thúc một quá trình. SIGHUP là cách kết thúc quá trình ít an toàn hơn so với SIGTERM. SIGKILL là cách không an toàn nhất trong ba tùy chọn trên để kết thúc một quá trình mà không lưu dữ liệu.
Để kết thúc một quá trình, chúng ta cần biết Process ID (PID) của quá trình đó. Mỗi quá trình là một phiên bản của một chương trình. Mỗi khi một chương trình bắt đầu, một PID duy nhất được tạo ra tự động cho quá trình đó.
Mỗi quá trình trong Linux có một PID. Quá trình đầu tiên được khởi động khi hệ thống Linux được khởi động là quá trình "init", vì vậy nó được gán một giá trị '1' trong hầu hết các trường hợp.
Quá trình "init" là quá trình chủ và không thể bị kết thúc bằng cách này, điều này đảm bảo rằng quá trình chủ không bị kết thúc một cách tình cờ. Quá trình "init" tự quyết định và cho phép chính nó bị kết thúc, trong đó lệnh kill chỉ là yêu cầu để tắt nguồn.
Cách sử dụng lệnh kill trong Linux
Liệt kê tất cả các quy trình Linux đang chạy
Để biết tất cả các quá trình và tương ứng với PID được gán, chạy lệnh ps sau đây.
# ps -A
Mẫu đầu ra:
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
Cách tùy chỉnh đầu ra trên bằng cú pháp 'pidof quá trình'.
# pidof mysqld
Mẫu đầu ra:
1684
Một cách khác để đạt được mục tiêu trên là tuân theo cú pháp sau đây.
# ps aux | grep mysqld
Mẫu đầu ra:
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 kết thúc một tiến trình trong Linux
Trước khi tiến hành thực hiện lệnh kill, có một số điểm quan trọng cần lưu ý:
- Một người dùng có thể kết thúc tất cả các quá trình của mình.
- Một người dùng không thể kết thúc quá trình của người dùng khác.
- Một người dùng không thể kết thúc các quá trình mà Hệ thống đang sử dụng.
- Một người dùng root có thể kết thúc các quá trình cấp Hệ thống và quá 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 thi lệnh 'pgrep'.
# pgrep mysql
Mẫu đầu ra:
3139
Để kết thúc quá trình với PID đã nêu ở trên, sử dụng lệnh kill như sau:
kill -9 3139
Lệnh trên sẽ kết thúc quá trình có PID=3139, trong đó PID là một giá trị số của quá trình.
Một cách khác để thực hiện chức năng tương tự có thể được viết lại như sau.
# kill -SIGTERM 3139
Tương tự, 'kill -9 PID' tương đương với 'kill -SIGKILL PID' và ngược lại.
Cách kết thúc một tiến trình trong Linux bằng tên tiến trình
Bạn phải biết tên quá trình trước khi kết thúc nó và nhập sai tên quá trình có thể gây rối.
# pkill mysqld
Kết thúc 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
Trường hợp một quá trình có quá nhiều phiên bản và một số quá trình con, chúng ta có hai lệnh là 'killall' hoặc 'pkill'. Đây là hai lệnh duy nhất trong nhóm lệnh này, chấp nhận tên quá trình là đối số thay vì số PID.
Cú pháp:
# killall [signal or option] Process Name Or # pkill Process Name
Để kết thúc tất cả các phiên bản của mysql cùng với các quá trình con, sử dụng lệnh sau:
# killall mysqld OR # pkill mysqld
Bạn luôn có thể xác minh trạng thái của quá trình xem nó đang chạy hay không bằng cách sử dụng một trong các lệnh sau đây:
# service mysql status OR # systemctl status mysql # pgrep mysql # ps -aux | grep mysql
Bên trên là những công dụng thường dùng của lệnh kill trong Linux, người mới bắt đầu có thể làm theo những ví dụ này để kết thúc tiến trình như mong muốn.
Mọi người cũng tìm kiếm: kill ubuntu