Kill All Stopped Jobs Linux

Kill All Stopped Jobs Linux



ใน Linux งานหมายถึงกระบวนการที่เริ่มต้นและจัดการโดยเชลล์ ซึ่งอาจเป็นคำสั่งเดียว คำสั่งเชลล์ที่ยาวและซับซ้อน รวมถึงไพพ์และการเปลี่ยนเส้นทาง ไฟล์เรียกทำงาน หรือสคริปต์ งานแต่ละงานใน Linux ได้รับการจัดการโดยการกำหนด IP ของงานตามลำดับที่เกี่ยวข้องกับกระบวนการเฉพาะ

แนวคิดหลักในการทำความเข้าใจเกี่ยวกับงาน Linux คือสถานะของพวกเขา มีสองสถานะหลักสำหรับงาน Linux:







  • เบื้องหน้า
  • พื้นหลัง

งานเบื้องหน้า

งานพื้นหน้าหมายถึงคำสั่งหรือโปรแกรมที่ดำเนินการในเชลล์และใช้เซสชันเทอร์มินัลจนกว่าจะเสร็จสิ้น ตัวอย่างจะเป็นการเปิดโปรแกรมจัดการไฟล์หรือเบราว์เซอร์ในเทอร์มินัล



ตัวอย่างเช่น ภาพหน้าจอต่อไปนี้แสดงหน้าต่างเทอร์มินัลที่มีงานเบื้องหน้า







ในภาพด้านบน พรอมต์ของเชลล์จะใช้งานไม่ได้จนกว่าหน้าต่าง Firefox จะปิดลง

งานเบื้องหลัง

สิ่งที่ตรงกันข้ามกับพื้นหน้าคืองานพื้นหลัง ในการเริ่มงานในเชลล์เป็นงานพื้นหลัง เราใช้สัญลักษณ์เครื่องหมายและ (&) การใช้คำสั่งนี้จะบอกเชลล์ให้ใส่คำสั่งใดๆ ก็ตามที่อยู่ข้างหน้าเครื่องหมายและในพื้นหลัง และแสดงพรอมต์ของเชลล์ทันที



ตัวอย่างด้านล่างแสดงวิธีการวางงาน Firefox (ในตัวอย่างด้านบน) ในพื้นหลัง

อย่างที่คุณเห็น ตอนนี้พร้อมท์ของเชลล์พร้อมใช้งานแม้ว่า Firefox จะยังทำงานอยู่

คุณจะสังเกตเห็นค่าตัวเลขที่แสดงสำหรับงานพื้นหลัง ค่าแรกที่ระบุด้วยวงเล็บเหลี่ยม ([]) จะแสดงรหัสงาน ในขณะที่อีกค่าระบุ PID ของกระบวนการที่เกี่ยวข้องกับงาน

วิธีจัดการงานเบื้องหลัง

คำสั่งงานจัดการการควบคุมงาน ซึ่งจะทำให้คุณสามารถดูงานในพื้นหลังได้

sudo งาน

การดำเนินการคำสั่งดังกล่าวจะแสดงงานพื้นหลังดังที่แสดงด้านล่าง:

เริ่มต้นทางด้านซ้าย เรามี Job ID

ตามด้วยเครื่องหมายบวก (+) หรือลบ (-) ทันทีหลังวงเล็บ เครื่องหมายบวกแสดงว่านี่เป็นงานปัจจุบัน ในขณะที่เลขลบแสดงงานถัดไป

วงเล็บถัดไปแสดงสถานะของงาน ที่สามารถเรียกใช้ หยุด ยุติ เสร็จสิ้น หรือออกด้วยรหัสสถานะ

สุดท้าย ส่วนสุดท้ายแสดงชื่อจริงของงาน

แสดงงานกับ PID

ในการแสดงงานพื้นหลังด้วยค่า PID ที่สอดคล้องกัน เราใช้แฟล็ก -l เป็น:

งาน -NS

ที่จะแสดงงานพื้นหลังด้วยค่า PID ดังที่แสดงในภาพด้านล่าง

งานพื้นหลังที่มีเอาต์พุต

สมมติว่าเรามีงานที่เราต้องการทำงานในพื้นหลังที่ทิ้งเอาต์พุตบนหน้าจอ ตัวอย่างเช่น ในตัวอย่างข้างต้น ฉันใส่คำสั่ง apt ซึ่งมีเอาต์พุตจำนวนมากในพื้นหลัง โดยไม่ทำให้เทอร์มินัลของฉันยุ่งเหยิง

ในการดำเนินการนี้ คุณสามารถเปลี่ยนเส้นทางผลลัพธ์ใน /dev/null เป็น:

sudo apt-get update > /dev/โมฆะ&

วิธีนำงานเบื้องหลังมาสู่เบื้องหน้า

เราสามารถนำงานพื้นหลังมาไว้ที่พื้นหน้าโดยใช้คำสั่ง fg ตัวอย่างเช่น ในการนำงาน firefox ที่มี Job ID เป็น 1 มาไว้เบื้องหลัง เราสามารถทำได้:

fg %1

ที่จะนำงานไปสู่เบื้องหน้าเป็น:

[ป้องกันอีเมล] :~$fg %1

firefox

ตัวเลือกคำสั่งงาน

คำสั่งงานไม่มีตัวเลือกมากมาย

เราได้พูดถึง -l เพื่อแสดงงานด้วย ID กระบวนการแล้ว

ตัวเลือกอื่นๆ ที่คุณสามารถส่งต่อไปยังคำสั่งงาน ได้แก่:

  • -NS – แสดงงานที่เปลี่ยนสถานะตั้งแต่การแจ้งเตือนครั้งล่าสุด ตัวอย่างเช่น งานที่เปลี่ยนจากการรันเป็นสถานะหยุด
  • -NS – แสดงเฉพาะ PID ของงาน
  • -NS – งานวิ่งเท่านั้น
  • -NS – แสดงเฉพาะงานที่หยุด

วิธียุติหรือฆ่างาน

เราสามารถยุติงานโดยใช้คำสั่ง kill ตามด้วย ID งาน สตริงย่อย หรือ ID กระบวนการ

ฆ่าโดยใช้ job id

ในการฆ่างานด้วยรหัสงาน เราใช้ % ตามด้วยค่า id เป็น:

ฆ่า %%

สิ่งนี้จะฆ่างานปัจจุบัน ซึ่งคล้ายกับ %+

ฆ่างานด้วยสตริงย่อย

ฆ่างานด้วยสตริงย่อย นำหน้าสตริงย่อยด้วย %? ตามด้วยค่าสตริงย่อยเป็น:

ฆ่า %?gnome-เครื่องคิดเลข

บันทึก : Linux รันงานพร้อมกัน ซึ่งหมายความว่าจะสลับไปมาระหว่างงานที่มีอยู่จนกว่าจะเสร็จ ดังนั้น การยุติเซสชันเทอร์มินัลด้วยงานที่ทำงานอยู่จะเป็นการยุติงานทั้งหมดของคุณ

คุณไม่ต้องกังวลกับสิ่งนี้หากคุณใช้เทอร์มินัลมัลติเพล็กเซอร์ เช่น tmux หรือหน้าจอ เนื่องจากคุณสามารถติดตั้งกลับเข้าไปใหม่ได้

วิธีฆ่าหยุดงาน

เพื่อให้เราสามารถฆ่างานที่หยุดทั้งหมดได้ เราต้องผูกสองคำสั่งเข้าด้วยกัน ตัวแรกจะได้รับ PID ของงานที่หยุดทั้งหมด และต่อไปจะฆ่างานทั้งหมดที่มีให้

ในการดูงานที่หยุด เราใช้คำสั่ง

งาน -NS

คำสั่งนี้แสดงงานที่หยุดทั้งหมด

เมื่อมีสิ่งนี้ เราสามารถรับ PID ของงานที่หยุดและไพพ์พวกมันไปยังคำสั่ง kill ได้ดังนี้:

sudo ฆ่า -9 ``งาน -NS-NS``

สิ่งนี้จะฆ่างานที่หยุดทั้งหมด

บทสรุป

บทช่วยสอนนี้กล่าวถึงแนวคิดของการควบคุมงานใน Linux และวิธีรับข้อมูลเกี่ยวกับงาน เป็นเรื่องดีที่จะสังเกตว่าการควบคุมงานอาจไม่พร้อมใช้งาน ทั้งนี้ขึ้นอยู่กับเชลล์ที่คุณเลือก

ขอบคุณสำหรับการอ่าน & Happy Shells