วิธียกเลิก ping <dest> &


9

คำสั่ง

ping <dest> &

ทำให้ ping ไปที่พื้นหลัง อย่างไรก็ตามยังคงพิมพ์เอาต์พุตไปยังเครื่องเทอร์มินัล Ctrl-C ไม่ได้หยุดเพียงแนะนำพร้อมท์ใหม่ จะหยุดมันได้อย่างไรจากเครื่องเทอร์มินัล?


นอกจากคำตอบแล้วยังมีวิธี จำกัดpingการทำซ้ำโดยธรรมชาติด้วยการนับ-c N- โดยที่ N เป็นจำนวนบวก
l0b0

1
@ l0b0 ใช่จริง แต่ฉันประสบปัญหานี้โดยเฉพาะและมันเกี่ยวข้องกับโปรแกรมใด ๆ ที่เราอาจไม่รู้เวลาดำเนินการหรือที่อาจไม่ได้กำหนดไว้ ดังนั้นฉันหมายถึงถามวิธีหยุดกระบวนการ
Vineet

คำตอบ:


24

ก่อนอื่นให้ป้อนfgเทอร์มินัลเดียวกับที่pingคำสั่งของคุณกำลังทำงาน (จะนำกระบวนการไปสู่เบื้องหน้า) จากนั้นกดCtrl+ cเพื่อหยุดกระบวนการ

ป้อนคำอธิบายรูปภาพที่นี่


วิธีนี้ใช้ได้ผล ฉันยังตระหนักว่า fg ทำงานถ้าเรามีกระบวนการพื้นหลังหลายกระบวนการโดยเรียกพวกเขาไปยังส่วนหน้าทีละคน
Vineet

ใช่นั่นคือวิธีการทำงานคุณสามารถใช้jobsเพื่อรับรายการกระบวนการที่ทำงานในพื้นหลัง
Ravexina

คุณสร้างวงวนภาพนั้นได้อย่างไร
phillipsk

3
@phillipsk เป็น GIF นั่นคือวิธีที่ GIF ทำงาน ...
Ravexina

1
@Seth โอ้ ... ในกรณีนั้นผมได้บันทึกวิดีโอโดยใช้ "Kazam" แล้วแปลงเป็น GIF ffmpegใช้
Ravexina

14

หากเป็นงานพื้นหลังเพียงงานเดียวของคุณคุณสามารถฆ่ามันkill %1ได้ หากไม่แน่ใจว่าคุณสามารถแสดงรายการงานแบ็คกราวน์ทั้งหมดของคุณด้วยjobsและใช้ในkill %<n>กรณีที่คุณแทนที่ n ด้วยจำนวนงานปิงของคุณ


4
นอกจากนี้ฉันพบว่า n ตรงกับหมายเลขที่พิมพ์ออกมาในวงเล็บเหลี่ยมเมื่อรันคำสั่ง
Vineet

7

เมื่อคุณส่งกระบวนการที่จะพื้นหลังไม่ว่าจะโดยการใช้ctrl- zหรือโดยในตอนท้ายของคำสั่งคุณจะได้รับการส่งออกในรูปแบบต่อไปนี้:& [index] process-idหากคุณส่งหลายกระบวนการไปยังพื้นหลังดัชนีจะเพิ่มขึ้นเรื่อย ๆ ทุกครั้ง

ตัวอย่างเช่น:

$ 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

เพื่อหยุดเฉพาะคุณสามารถใช้kill <process-id>หรือใช้fg <index>ตามด้วยctrl-c

ตัวอย่างการใช้เอาต์พุตก่อนหน้า:

$ kill 41614

หรือ

$ fg 7
sleep 106
^C

3

เปิดแท็บใหม่ของเทอร์มินัลให้เรียกใช้:

$ pgrep ping
  2564

จากนั้นฆ่าkillคำสั่งpid โดยใช้:

$ kill 2564

ฉันใช้ kill ในเทอร์มินัลเดียวกันด้วย (แม้ว่าเอาต์พุตจะทำให้ใช้งานยาก) อย่างไรก็ตามฉันสงสัยว่าจะทำอย่างไรถ้าฉันไม่สามารถย้อนกลับไปที่เทอร์มินัลเพื่อดู id กระบวนการที่พิมพ์ได้ดังนั้น pgrep จึงได้ช่วยเพิ่มเติม
Vineet

3
เมื่อคุณใช้pgrepเพื่อค้นหากระบวนการตามชื่อคุณยังสามารถใช้pkillเพื่อฆ่ากระบวนการตามชื่อ ไม่จำเป็นต้องพิมพ์ / คัดลอกกระบวนการ id killและการใช้งาน
ผู้บัญชาการไบต์

สิ่งนี้มีประโยชน์ที่จะรู้ แต่สำหรับคำถามนี้มันเกินความจริงเล็กน้อย :-p
tu-Reinstate Monica-dor duh


0

วิธีการที่แตกต่างกันเล็กน้อยต่อการ ping อย่างต่อเนื่องคือการใช้ตัวเลือก -c และป้อนจำนวนเวลาที่คุณต้องการให้เรียกใช้วิธีที่มันจะหยุดตัวเองหลังจากการนับที่ต้องการเช่นด้านล่าง ping จะหยุดหลังจาก 100 pings

ping -c 100 192.168.1.1 &



0

คุณสามารถดูกระบวนการทั้งหมดที่คุณใส่ไว้ในพื้นหลัง (สำหรับเซสชันปัจจุบัน) พร้อมกับjobsคำสั่งหลังจากที่คุณเรียกใช้คำสั่งนี้คุณจะเห็นกระบวนการทั้งหมดที่กำลังทำงานอยู่บน bash ปัจจุบันและทางด้านซ้ายของแต่ละกระบวนการคุณสามารถเห็นตัวเลขบางส่วน:

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

คุณสามารถยกเลิกงาน (กระบวนการ) โดยใช้kill -15 n%(n คือตัวเลขที่อยู่ในเครื่องหมาย [[])

-15สำหรับการยกเลิกกระบวนการอย่างถ้าคุณต้องการบังคับปิดกระบวนการเพียงใช้-9แทน-15 PS: มันชัดเจนถ้าคุณเรียกใช้คำสั่งที่มีสิทธิ์ใช้งานรูทคุณต้องรันkill -15 n%ด้วยsudo

2) คุณสามารถดูกระบวนการทั้งหมดที่ทำงานอยู่ในระบบด้วยps -auxและสำหรับการดูping:

ps -aux | grep ping 

ผลลัพธ์เป็นเช่น:

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

หมายเลขที่สอง (2615) คือ PID หรือ ID กระบวนการและคุณสามารถยุติกระบวนการด้วย

sudo kill -15 2615
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.