Cách chấm dứt ping <mệnh> &


9

Lệnh

ping <dest> &

gây ra ping để đi đến nền. Nó vẫn in đầu ra đến thiết bị đầu cuối, tuy nhiên. Ctrl-C không dừng nó, chỉ giới thiệu một dấu nhắc mới. Làm thế nào để ngăn chặn nó từ thiết bị đầu cuối?


Ngoài các câu trả lời, có một cách để hạn chế pingcác lần lặp một cách tự nhiên với số đếm - -c N- trong đó N là một số dương.
l0b0

1
@ l0b0 Đúng, nhưng tôi đã gặp phải vấn đề đặc biệt này và nó thực sự liên quan đến bất kỳ chương trình nào mà chúng tôi có thể không biết thời gian thực hiện hoặc nơi mà thậm chí có thể không được xác định. Vì vậy, tôi có nghĩa là hỏi làm thế nào để dừng quá trình.
Vine 15/03/19

Câu trả lời:


24

Đầu tiên nhập fgvào cùng một thiết bị đầu cuối mà pinglệnh của bạn đang chạy (nó đưa quy trình vào nền trước), sau đó nhấn Ctrl+ cđể dừng quá trình.

nhập mô tả hình ảnh ở đây


Những công việc này. Tôi cũng nhận ra rằng fg hoạt động nếu chúng ta có nhiều quá trình nền, bằng cách gọi chúng đến tiền cảnh từng cái một.
Vine 15/03/19

Đúng, đó là cách nó hoạt động, bạn có thể sử dụng jobsđể có được một danh sách các quy trình đang chạy trong nền.
Ravexina

Làm thế nào bạn thực hiện vòng lặp hình ảnh đó?
phillipsk

3
@phillipsk Đó là GIF, đó là cách GIF hoạt động ...
Ravexina 16/03/19 lúc

1
@Seth Oh ... trong trường hợp đó, tôi đã quay video bằng "Kazam" sau đó chuyển đổi nó thành gif bằng cách sử dụng ffmpeg.
Ravexina

14

Nếu đó là công việc nền tảng duy nhất của bạn, bạn có thể giết nó kill %1. Nếu không chắc chắn, bạn có thể liệt kê tất cả các công việc nền của mình jobsvà sử dụng kill %<n>nơi bạn thay thế n theo số lượng công việc ping của bạn.


4
Ngoài ra, tôi phát hiện ra rằng n khớp với số được in ra trong ngoặc vuông khi chạy lệnh.
Vine 15/03/19

7

Khi bạn gửi một quá trình đến nền, cho dù bằng cách sử dụng ctrl- zhoặc &ở cuối lệnh, bạn sẽ nhận được một đầu ra ở định dạng sau : [index] process-id. Nếu bạn gửi nhiều quá trình đến nền, chỉ mục sẽ tiếp tục tăng mỗi lần.

Ví dụ:

$ sleep 100 &
[1] 41608
$ sleep 101 &
[2] 41609
$ sleep 102 &
[3] 41610
$ sleep 103 &
[4] 41611
$ sleep 104 &
[5] 41612
$ sleep 105 &
[6] 41613
$ sleep 106 &
[7] 41614

Để dừng một mục cụ thể, bạn có thể sử dụng kill <process-id>hoặc sử dụng fg <index>theo sau ctrl-c

Ví dụ sử dụng đầu ra trước đó:

$ kill 41614

hoặc là

$ fg 7
sleep 106
^C

3

Khởi chạy một tab mới của thiết bị đầu cuối, chạy:

$ pgrep ping
  2564

Sau đó tiêu diệt pid bằng killlệnh:

$ kill 2564

Tôi cũng đã sử dụng kill trong cùng một thiết bị đầu cuối (mặc dù đầu ra gây khó khăn khi sử dụng). Tuy nhiên, tôi đã tự hỏi phải làm gì nếu tôi không thể quay ngược trở lại trong thiết bị đầu cuối để xem id quá trình được in, vì vậy pgrep đã giúp đỡ, thêm vào đó.
Vine 15/03/19

3
Khi bạn sử dụng pgrepđể tìm kiếm các quy trình theo tên, bạn cũng có thể sử dụng pkillđể tiêu diệt chúng theo tên. Không cần phải gõ / sao chép id quá trình và sử dụng kill.
Chỉ huy Byte

Điều này rất hữu ích để biết, nhưng đối với câu hỏi này, nó hơi quá mức cần thiết . :-p
tu-Tái lập Monica-dor duh

0

Khi bạn root, nó đơn giản killall ping.


Cảm ơn vì đã giết phiên ping của tôi, tôi đã chạy trên cùng một máy - một đồng nghiệp
Oscar

0

Cách tiếp cận hơi khác nhau đối với ping liên tục là sử dụng tùy chọn -c và nhập số thời gian bạn muốn nó chạy, theo cách đó nó sẽ tự dừng sau khi đếm mong muốn, tức là dưới ping sẽ dừng sau 100 lần ping

ping -c 100 192.168.1.1 &


0

Chỉ dùng:

kill -9 %%

và nó sẽ giết quá trình nền hiện tại bạn đang chạy.


0

Bạn có thể thấy tất cả quá trình bạn đặt trong nền (cho phiên hiện tại) bằng jobslệnh Sau khi bạn chạy lệnh này, bạn sẽ thấy tất cả quy trình đang chạy trên bash hiện tại và ở bên trái của mỗi quy trình bạn có thể thấy một số số:

[1]-  Running                 sleep 200000 &
[2]+  Running                 sleep 300000 &

Bạn chỉ có thể chấm dứt các công việc (quy trình) bằng cách sử dụng kill -15 n%(n là một số nằm trong dấu [[])

-15là để chấm dứt quá trình độc đáo, nếu bạn muốn buộc đóng quy trình, chỉ cần sử dụng -9thay vì -15 PS: Rõ ràng nếu bạn chạy một lệnh với đặc quyền gốc, bạn phải chạy kill -15 n%vớisudo

2) Bạn có thể thấy tất cả quá trình đang chạy trên hệ thống ps -auxvà để xem ping:

ps -aux | grep ping 

Đầu ra giống như:

root     2615  0.0  0.0  25828  1052 pts/0    S    02:12   0:00 ping 8.8.8.8

Số thứ hai (2615) là PID hoặc ID tiến trình và bạn có thể chấm dứt quá trình với

sudo kill -15 2615
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.