HƯỚNG DẪN Quản lý các tiến trình với killall và kill

Thảo luận trong 'KIẾN THỨC VPS/SERVER' bắt đầu bởi quyet1990, 7/11/16.

  1. quyet1990

    quyet1990 New Member

    Tham gia ngày:
    22/10/16
    Bài viết:
    220
    Đã được thích:
    0
    killall là một công cụ để kết thúc tiến trình đang chạy trên hệ thống của bạn dựa vào tên. Ngược lại, kill chấm dứt tiến trình dựa trên số process ID hoặc "PID.". Sử dụng killall và kill kết hợp với công cụ ps để quản lý các tiến trình và kết thúc các tiến trình khi không có phản hồi là rất cần thiết.

    Sử dụng
    Killall
    Lệnh killall có dạng như sau:
    Mã:
    killall [process name]

    Thay thế [process name] với tên của bất kỳ tiến trình mà bạn muốn chấm dứt. killall sẽ chấm dứt tất cả các tiền trình phù hợp với tên được chỉ định. Bạn có thể chỉ định một tín hiệu khác nhau bằng cách sử dụng tùy chọn -s như sau:
    Mã:
    killall -s 9 [process name]
    Điều này sẽ gửi tín hiệu SIGKILL, nó rất hữu ích trong việc chấm dứt một số tiến trình đặc biệt cố chấp.
    Bạn cũng có thể chỉ định các tín hiệu trong một trong các định dạng sau:
    Mã:
    killall -KILL [process name]
    killall -SIGKILL [process name]
    killall -9 [process name]
    
    Các lệnh trên thì đều tương đương nhau.

    Kill
    Lệnh kill chấm dứt các tiến trình dựa trên con số process ID hoặc "PID". Câu lệnh có dạng như sau:
    Mã:
    kill [PID]
    Điều này sẽ gửi tín hiệu SIGTERM cho PID được chỉ định. Bạn có thể chỉ định nhiều PID trên dòng lệnh để chấm dứt quá trình với kill. Bạn cũng có thể gửi tín hiệu hệ thống thay thế với kill. Các ví dụ sau sẽ gửi tín hiệu SIGKILL đến PID chỉ định:
    Mã:
    kill -s KILL [PID]
    kill -KILL [PID]
    
    Tín hiệu hệ thống:
    Bạn có thể sử dụng kill và killall để gửi bất kỳ các tín hiệu sau đây.
    1. SIGHUP
    2. SIGINT
    3. SIGQUIT
    4. SIGILL
    5. SIGTRAP
    6. SIGABRT
    7. SIGIOT
    8. SIGFPE
    9. SIGKILL
    10. SIGUSR1
    11. SIGSEGV
    12. SIGUSR2
    13. SIGPIPE
    14. SIGALRM
    15. SIGTERM
    16. SIGSTKFLT
    17. SIGCHLD
    18. SIGCONT
    19. SIGSTOP
    20. SIGSTP
    21. SIGTTIN
    22. SIGTTOU
    23. SIGURG
    24. SIGXCPU
    25. SIGXFSZ
    26. SIGVTALRM
    27. SIGPROF
    28. SIGWINCH
    29. SIGIO and SIGPOLL
    30. SIGPWR
    31. SIGSYS
    Các câu lệnh sau đây giúp bạn lấy ra được danh sách các tín hiệu:
    Mã:
    kill -l
    killall -l
    
    Nếu bạn cần chuyển đổi tên tín hiệu thành số tín hiệu, hoặc số tín hiệu thành tên tín hiệu xem xét các ví dụ sau:
    Mã:
    $ kill -l 9
    KILL
    $ kill -l kill
    9
    
    Tìm các tiến trình đang chạy
    Để hiển thị các tiến trình đang chạy, baạn sử dụng lệnh ps để xem quy trình hiện đang chạy và PID của họ.
    Bạn có thể kết hợp với lệnh grep để tìm đúng tiến trình cần tìm. Câu lệnh như sau:
    Mã:
    $ ps aux | grep "emacs"
    username 3896 0.0 2.2 56600 44468 ? Ss Sep30 4:29 emacs
    username 22843 0.0 0.0 3900 840 pts/11 S+ 08:49 0:00 grep emacs
    
    Lệnh này lọc các danh sách của tất cả các quy trình hiện đang chạy cho chuỗi emacs sử dụng grep. Các số được liệt kê trong cột thứ hai là PID, trong trường hợp là 3896 của quá trình emacs. Quá trình grep sẽ luôn luôn phù hợp với một tìm kiếm đơn giản, như trong kết quả thứ hai. Để hiển thị tất cả các tiến trình đang chạy, thực hiện lệnh sau:
    Mã:
    ps auxf
    Một khi bạn đã có được số PID hay tên tiến trình, sử dụng killall hoặc kill để chấm dứt quá trình như trên

    Xác nhận chấm dứt tiến trình (Verifying Process Termination)
    Các tùy chọn -w sẽ chờ cho đến khi tiến trình này kết thúc trước khi thoát. Hãy xem xét lệnh sau đây:
    Mã:
    killall -w irssi
    Lệnh này phát tín hiệu hệ thống SIGTERM cho tiến trình với một tên phù hợp irssi. killall sẽ chờ cho đến khi tiến trình phù hợp đã kết thúc. Nếu không có tiến trình phù hợp với tên được chỉ định, killall trả về một thông báo lỗi, như dưới đây:
    Mã:
    $ killall -w irssi
    irssi: no process found
    
     
Tags:

Chia sẻ trang này

Đang tải...