Diệt quy trình bằng một lệnh duy nhất

Nhiều khi chúng ta cần phải giết một tiến trình thông qua một thiết bị đầu cuối. Nếu chúng ta biết tên đầy đủ của quá trình (ví dụ: kate) chúng tôi không có vấn đề, đơn giản:

killall kate

Nó giải quyết vấn đề cho chúng tôi ... nhưng điều gì sẽ xảy ra nếu chúng tôi không biết tên chính xác của quá trình?

Trong những trường hợp đó, chúng tôi phải liệt kê tất cả các quy trình với ps aux như thể hiện trong ảnh chụp màn hình sau:


Sau đó, tìm PID của quy trình, trong trường hợp này, chúng tôi tìm PID của kate:


Sau đó thực hiện một:

kill 3808

Và thì đấy, ở đó chúng ta giết chết quá trình.

Chà ... trong một dòng duy nhất, chúng ta có thể tìm kiếm quá trình (mà không cần biết tên đầy đủ), tìm ra PID của nó và cũng giết nó:
ps ax | grep kat | grep -v grep | awk '{print $2}' | xargs kill

Bạn có thể thấy:

  1. Chúng tôi liệt kê các quy trình (ps aux)
  2. Chúng tôi không biết tên đầy đủ hoặc chính xác của kate (này, nó có thể là kate-editor hoặc cái gì đó tương tự) vì vậy chúng tôi chỉ lọc theo kat (grep kat)
  3. Nhưng chúng tôi sẽ nhận được hai quy trình liên quan đến kat nếu chúng tôi chỉ sử dụng bộ lọc này, một là quy trình kate và một quy trình khác là quy trình mà chúng tôi kích hoạt để lọc, tôi để lại cho bạn một ảnh chụp màn hình để bạn có thể hiểu rõ: (Lưu ý rằng có 2 dòng, đó là 2 quá trình)

  4. Để tránh những gì đã được giải thích trước đó, chúng tôi tạo một bộ lọc khác (grep -v grep). Những gì chúng tôi sẽ làm ngược lại ... nếu chúng tôi lọc bằng grep, nó sẽ chỉ hiển thị các kết quả phù hợp với bộ lọc, tốt với grep -v Chúng tôi hướng dẫn bạn KHÔNG hiển thị các kết quả trùng khớp mà chỉ hiển thị những gì không khớp. Tôi cho bạn xem ảnh chụp màn hình kết quả như thế nào cho đến nay: (Lưu ý rằng bây giờ chỉ có quy trình của kate xuất hiện)

  5. Chà, chúng tôi đã cô lập quá trình mà chúng tôi muốn giết, bây giờ chúng tôi chỉ phải trích xuất PID của nó, là số thứ 2, tức là 4062. Và PID nằm trong cột thứ 2 (Cột đầu tiên chứa người dùng có UID 1), vì vậy bằng cách sử dụng awk, chúng ta có thể nói rằng nó chỉ hiển thị từ dòng đó những gì nó tìm thấy trong cột thứ 2 (awk '{print $ 2}'). Điều này sẽ chỉ hiển thị cho chúng tôi số quy trình, tức là chỉ PID sẽ xuất hiện trong thiết bị đầu cuối.
  6. Nhưng chúng tôi không muốn hiển thị PID, những gì chúng tôi muốn là giết quá trình với PID đó ... vì vậy chúng tôi sẽ làm điều đó, chúng tôi chuyển những gì chúng tôi có cho đến nay cho lệnh giết và sẵn sàng (giết xargs)
  7. Xargs đó có nghĩa là gì? ... đơn giản, trong trường hợp này, chúng tôi không thể vượt qua PID để giết chỉ với các đường ống ( | ), điều này chỉ đơn giản là không đủ, vì vậy xargs (cho phép chuyển các giá trị hoặc dữ liệu và sau đó thực thi hoặc giết chúng) là những gì sẽ cho phép chúng tôi hoàn thành công việc.

Và đây là kết thúc 😀

Vâng ... tôi biết điều này có vẻ hơi phức tạp, đó chính là lý do tại sao tôi đã cố gắng giải thích nó tốt nhất có thể.

Tôi biết rằng có thể ít người sẽ cần lệnh này, nhưng mục tiêu của bài viết này cũng giống như mục tiêu của bài viết này. DesdeLinux, dạy họ điều gì đó mới mỗi ngày, luôn cố gắng khiến họ không còn sợ hãi Linux... và cá nhân tôi cũng muốn họ học cách sử dụng thiết bị đầu cuối mà không sợ hãi 😉

Dù sao ... tôi hy vọng bạn thấy nó thú vị, tôi tiếp tục học cách sử dụng ôi mà thực sự là tuyệt vời hehe.

Liên quan


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.

  1.   ezitoc dijo

    Đó là sự thật, awk rất hữu ích đối với tôi và tôi nghĩ rằng bất kỳ ai cần thao tác với các tệp văn bản có cấu trúc đều rất nên biết cách sử dụng nó.

    Tôi chỉ có một câu hỏi (không liên quan gì đến đầu vào: D), làm thế nào (và với chương trình nào) bạn đã tạo ra hiệu ứng mờ cho phép bạn đánh dấu một phần của ảnh chụp màn hình?

    Chúc mừng.

    1.    ezitoc dijo

      Thử nghiệm nếu điều này từ định dạng nó hoạt động và nếu không ai đó cho tôi biết cách làm điều đó

      Cám ơn rất nhiều.

    2.    KZKG ^ Gaara dijo

      Vâng, vâng ... Tôi đã khám phá lại Linux và tôi biết cách làm việc với awk HAHAHAHA.
      Về hiệu ứng và như vậy, không có gì ... chỉ là Gimp 😀

      Tôi chọn phần mà tôi muốn đánh dấu, cắt nó bằng [Ctrl] + [X] và dán nó như một lớp mới, sau đó tôi chọn lớp dưới (là lớp tôi muốn làm mờ) và đi tới Bộ lọc- »Gaussian (hoặc bất cứ điều gì bạn viết hehe) và thì đấy.
      Bây giờ, để tạo cho nó hiệu ứng tối, tôi chỉ cần tạo một lớp mới (nền trắng) và đặt nó giữa hai lớp này mà tôi đã có, tôi cho nó màu đen và trong thanh trong suốt (góc trên bên phải) tôi di chuyển nó đến nơi tôi đạt được hiệu ứng mong muốn .

      Xin chào và cảm ơn vì nhận xét 🙂

      1.    Roberto Evolution Santana dijo

        Lớn !!

  2.   Hướng dẫn sử dụng Nguồn dijo

    Nếu quy trình từ một chương trình hiển thị, không gì thoải mái hơn là nhập xkill trên bảng điều khiển, nhấp vào chương trình để giết, và thì đấy.

    1.    KZKG ^ Gaara dijo

      bấm vào chương trình để giết
      hehe yeah ... đó là giả sử bạn có GUI hehe.

      1.    Hướng dẫn sử dụng Nguồn dijo

        Đúng vậy, đó là lý do tại sao tôi nói "nếu quy trình là từ một chương trình có thể nhìn thấy được."

        1.    Windousian dijo

          Sẽ dễ dàng hơn khi nhấp vào nút có dấu "X". GNOME Shell vẫn có nút đó phải không? :-D.

          1.    Hướng dẫn sử dụng Nguồn dijo

            Nếu chương trình bị đóng băng (đó là lý do chính tại sao bạn cần phải loại bỏ quá trình của nó) thì hợp lý là nút này sẽ không phản hồi cho dù bạn nhấn nó bao nhiêu đi nữa.

            Tôi nghĩ GNOME Shell sẽ sớm loại bỏ nó để bạn có thể thấy điều kỳ diệu về xúc giác khi đóng cửa sổ bằng cách kéo chúng xuống cuối màn hình như trong Windows 8. Không cần phải nói, trên màn hình rộng, đó là một bài tập tuyệt vời.

          2.    Windousian dijo

            Giờ thì tôi đã hiểu. Trong trường hợp đó, tôi thích Control + Alt + Esc (trong KDE).

            Tôi không thể chờ đợi để xem các bản xem trước GNOME Shell mới, chúng thực sự là một điều tuyệt vời.

  3.   đúng dijo

    Điều này làm tương tự nhưng ít được viết hơn.
    Trong trường hợp này, tôi lấy leafpad làm ví dụ, đó là lý do tại sao lá xuất hiện trong grep
    ps -e | grep leaf | awk '{print $1}' | xargs kill

    Liên quan

  4.   Hệ thống dijo

    Phù! Con trai của mẹ, hãy thử chạy "pgrep kat", là "pgrep" để làm gì đó.

    Và để thực thi "man pgrep". Và "man pidof", mà đôi khi "pidof" có thể giúp bạn.

    Và để thực hiện «ps aux | grep [k] at ", sẽ không trả về" quá trình chúng tôi kích hoạt để lọc "mà kết quả là bạn nhận xét, do đó, bạn sẽ tiết kiệm được công việc.

    ¡Saludos!

    1.    Hệ thống dijo

      Oh, và "pkill", cái mà bạn đang tìm kiếm. Ví dụ: "pkill kat".

    2.    KZKG ^ Gaara dijo

      Ồ, thú vị ... Tôi không biết pgrep 🙂
      Cảm ơn vì mẹo 😀

      1.    Hệ thống dijo

        Cảm ơn bạn và bài viết của bạn.

        Nhân tiện, trong https://flossblog.wordpress.com/2009/11/11/truco-del-dia-excluir-al-proceso-grep-en-la-salida-de-ps-aux/ nhận xét về kỹ thuật sử dụng các lệnh như «ps aux | grep [n] program_name ", họ giải thích rõ hơn tôi ở đó.

        ¡Saludos!

        1.    KZKG ^ Gaara dijo

          Cảm ơn vì liên kết 😀
          Đó là điều tuyệt vời về sự tồn tại của nó. DesdeLinux…không quan trọng bạn là người dùng, biên tập viên hay quản trị viên, tất cả chúng ta đều luôn học hỏi những điều mới 🙂

          Xin chào và cảm ơn một lần nữa người bạn.

  5.   Giá cả dijo

    Cảm ơn tất cả các bạn rất nhiều vì thời gian và sự cống hiến của bạn, nó rất đáng để truy cập và đọc trang web này vài lần trong ngày.

    Cảm ơn một lần nữa.

  6.   Ông Linux. dijo

    KZKG ^ Gaara hầu như luôn luôn giống nhau, khi nói đến loại mẹo này, sẽ có một người khác làm điều tương tự với một lệnh đơn giản. Nhưng tôi xin chúc mừng anh ấy, anh ấy luôn không ngừng cống hiến.

    1.    KZKG ^ Gaara dijo

      hehe yep… Tôi biết cách làm X osa và tôi đến đây và chia sẻ phương pháp, nhưng sau đó họ chia sẻ một cách đơn giản hơn để đạt được điều tương tự hahaha, nhưng với điều này thì chúng ta đều thắng, phải không? 😀

      1.    truko22 dijo

        Đúng vậy 0 /

      2.    Hướng dẫn sử dụng Nguồn dijo

        Hahaha, bạn luôn đi con đường phức tạp nhất. 😀

        1.    KZKG ^ Gaara dijo

          HAHAHA vâng, tôi đã luôn nghĩ: «Nếu tôi biết cách làm nó theo cách khó, thì tôi sẽ học cách làm nó một cách đơn giản mà không gặp khó khăn.»Và… ngược lại, nó không hoạt động giống nhau hahaha.

  7.   Oscar dijo

    Vấn đề sẽ là nếu chúng ta có hai quy trình có tên giống nhau.
    Ví dụ: một quy trình kate và một quy trình khác của ... mmm ... giả sử kater xD
    Với một mệnh lệnh như vậy, chúng ta sẽ giết cả hai, phải không?

    1.    KZKG ^ Gaara dijo

      Vâng, điều đó sẽ xảy ra 🙂

  8.   truko22 dijo

    TT tội nghiệp Kate. Tôi sử dụng xkill trong KDE, nó được khởi chạy nhanh chóng bằng "ctrl + alt + esc" hoặc cũng với "ctrl + Esc" mở "Hoạt động hệ thống" và thực hiện bằng đồ họa. Bây giờ thủ tục này thông qua thiết bị đầu cuối phải được học, mặc dù tôi có một máy chủ gia đình với debian ổn định và nó không bị treo gì cả.

  9.   Yulian dijo

    Tuyệt quá! ngay bây giờ tôi đang tham gia khóa học hệ điều hành và tôi cần thực hiện các tác vụ với thiết bị đầu cuối, hướng dẫn của bạn là một trợ giúp tuyệt vời! cảm ơn

  10.   pablo dijo

    Giải thích rất tốt, tuyệt vời blog tôi vừa gặp, tôi trỏ nó vào mục yêu thích. Cảm ơn bạn.

  11.   Lập tức dijo

    Chà, cũng tốt, mặc dù có một số lúc họ không thể bị giết….

  12.   mồi nhử dijo

    sát thương -9

    1.    mồi nhử dijo

      pkill -9 "tên quy trình"
      trong bình luận trước, tôi đã đặt «» nhưng nó không xuất hiện xD

  13.   itobest dijo

    chúc ngủ ngon, tôi có thời gian đọc nguồn cấp dữ liệu của bạn và hôm nay tôi quyết định thử lệnh ps ax | grep chrome | grep -v grep | awk '{print $ 1}' | xargs kill và tôi gặp lỗi kill sau: không thể tìm thấy tiến trình "?" với kinh nghiệm ít ỏi có được trong bash, tôi quyết định thực hiện một số sửa đổi và cuối cùng tôi chỉ còn lại ps -A | grep c | grep -v grep | awk '{print $ 1}' | xargs giết vì ps -A được sử dụng để hiển thị tất cả các quá trình một cách tóm tắt và điều bất thường thứ hai là nó đã ném cho tôi TTY «?» và nó có hiệu quả với tôi, cảm ơn bạn rất nhiều Tôi thực sự thích blog của bạn, lời chào

  14.   Michael dijo

    Cảm ơn compa, bạn không thể tưởng tượng được số lượng vấn đề mà bạn vừa giải quyết cho tôi bằng lệnh này.

    Chúc mừng!

  15.   e-mail dijo

    CẢM ƠN !!!!

  16.   Arturo dijo

    Bài xuất sắc. Chỉ là những gì tôi đang tìm kiếm và không biết làm thế nào để làm điều đó, và lời giải thích là rất tốt.

    Chúc mừng.