เมื่อใดที่ฉันไม่ควรฆ่ากระบวนการ -9


401

ฉันมักจะลังเลที่จะวิ่งkill -9แต่ฉันเห็นผู้ดูแลคนอื่นทำเกือบเป็นประจำ

ฉันคิดว่าอาจมีพื้นกลางที่เหมาะสมดังนั้น:

  1. ควรkill -9ใช้เมื่อใดและเพราะเหตุใด เมื่อใดและเพราะเหตุใด
  2. สิ่งที่ควรลองก่อนทำ
  3. การดีบักกระบวนการ "หยุด" ชนิดใดที่อาจทำให้เกิดปัญหาเพิ่มเติม

7
ดีที่เกี่ยวข้องกับคำตอบ SO
jw013

คำตอบ:


362

โดยทั่วไปคุณควรใช้kill(ย่อมาจากkill -s TERMหรือบนระบบส่วนใหญ่kill -15) ก่อนkill -9( kill -s KILL) เพื่อให้กระบวนการเป้าหมายมีโอกาสในการล้างข้อมูลหลังจากนั้น (กระบวนการไม่สามารถตรวจจับหรือเพิกเฉยSIGKILLได้ แต่สามารถทำได้และมักจะตรวจจับSIGTERMได้) หากคุณไม่ให้โอกาสในการดำเนินการจนเสร็จสิ้นสิ่งที่ทำและล้างข้อมูลอาจทำให้ไฟล์เสียหาย (หรือสถานะอื่น ๆ ) ที่อยู่รอบ ๆ จะไม่สามารถเข้าใจได้เมื่อรีสตาร์ทแล้ว

strace/ truss, ltraceและgdbมีความคิดที่ดีโดยทั่วไปสำหรับการมองหาที่ว่าทำไมกระบวนการติดค้างอยู่ ( truss -uบน Solaris มีประโยชน์เป็นพิเศษฉันพบว่าltraceบ่อยครั้งมักจะนำเสนอข้อโต้แย้งกับการเรียกใช้ไลบรารีในรูปแบบที่ใช้งานไม่ได้) Solaris ยังมี/procเครื่องมือพื้นฐานที่มีประโยชน์ซึ่งบางส่วนได้ถูกส่งไปยัง Linux ( pstackมักเป็นประโยชน์)


67
เหตุผลที่น่าสนใจก็คือถ้าคุณติดนิสัยในการส่ง SIGKILL จากนั้นเมื่อคุณเข้าสู่โปรแกรมซึ่งจะทำให้ฐานข้อมูลที่สำคัญสำหรับคุณหรือ บริษัท ของคุณเสียหายคุณจะต้องเสียใจจริงๆ kill -9มีการใช้งานเป็นเทอร์มินัลทางเลือกสุดท้ายเน้นที่ทางเลือกสุดท้าย ผู้ดูแลระบบที่ใช้งานก่อนทางสุดท้าย a) ไม่เข้าใจว่าเป็นผู้ดูแลระบบดีเกินไปและ b) ไม่ควรอยู่ในระบบการผลิต
Arcege

9
@Mikel อีกสิ่งหนึ่งที่ต้องทำในบางครั้งมันเป็นการดีที่สุดที่จะหลอกลวงให้แอปทำความสะอาดตัวเองด้วยสัญญาณเช่น SIGQUIT หรือ SIGSEGV หากไม่ตอบสนองต่อ SIGINT / SIGTERM ตัวอย่างเช่นแอป 3 มิติแบบเต็มหน้าจอหรือแม้แต่ Xorg การใช้ SIGQUIT นั้นจะไม่มีโอกาสล้างสิ่งใด แต่หลอกให้คิดว่าเกิดข้อผิดพลาดในส่วนและจะรู้สึกว่าไม่มีทางเลือกนอกจากทำความสะอาดและออก
penguin359

12
@Arcege คุณคิดว่าการใช้ฐานข้อมูลที่ทำลายข้อมูลถ้าถูกฆ่าด้วย -9 นั้นเป็นฐานข้อมูลที่คุ้มค่าหรือไม่? iirc, mysql, bdb, pg, ฯลฯ ... ทั้งหมดทำงานได้ดีเมื่อถูกฆ่าด้วย -9
dhruvbird

13
killall -9 java ftw
dmourati

23
@dhruvbird: เพียงเพราะฐานข้อมูลของคุณควรจะมาพร้อมกับเสื้อกันกระสุนไม่ได้หมายความว่าคุณควรจะยิงมันถ้าคุณไม่ต้องการ แม้ว่าคุณอาจพูดถูกว่าไม่เสี่ยงเท่าที่ Arcege พูด แต่ฉันคิดว่าประเด็นของเขายังคงมีความเสี่ยงและควรเป็นทางเลือกสุดท้าย
iconoclast

228

Randal Schwartz เคยโพสต์ "ใช้ประโยชน์จาก (x)" ในรายการบ่อยๆ kill -9หนึ่งโพสต์ดังกล่าวเป็นเรื่องเกี่ยวกับ มันมีเหตุผลและสูตรที่ต้องติดตาม นี่คือรุ่นที่สร้างขึ้นใหม่ (ยกมาด้านล่าง)

(อ้างสิ่งที่น่ารังเกียจ)

ไม่ไม่ไม่. อย่าใช้ kill -9

มันไม่ได้ให้โอกาสในการทำความสะอาด:

1) ปิดการเชื่อมต่อซ็อกเก็ต

2) ล้างไฟล์ temp

3) แจ้งเด็ก ๆ ว่ากำลังจะจากไป

4) รีเซ็ตคุณสมบัติของเครื่อง

และอื่น ๆ และอื่น ๆ และอื่น ๆ

โดยทั่วไปแล้วส่ง 15 และรอสักครู่หรือสองวินาทีและถ้านั่นไม่ได้ผลให้ส่ง 2 และถ้าไม่ได้ผลให้ส่ง 1 หากไม่ได้โปรดลบไบนารีเพราะโปรแกรมทำงานผิดปกติ!

อย่าใช้ kill -9 อย่านำเครื่องเกี่ยวนวดเข้าด้วยกันเพื่อทำความสะอาดกระถาง

อีกการใช้ Usenet ที่ไร้ประโยชน์

(.signature)


12
ระบบปฏิบัติการจะไม่ปิดตัวอธิบายไฟล์ที่เปิดอยู่ (รวมถึงซ็อกเก็ต) เมื่อกระบวนการยุติลงหรือไม่
Brian Gordon

3
ใช่! ฉันจะ. แต่สมมติว่าคุณกำลังฆ่ากระบวนการเซิร์ฟเวอร์ที่เชื่อมต่อกับไคลเอนต์จากนั้นลูกค้าจะไม่สังเกตเห็นว่าเซิร์ฟเวอร์หายไปก่อนหมดเวลา
Björn Lindqvist

45
อาใช่เก่า "ถ้าเป็นในทางที่ไม่สมบูรณ์คุณจะโง่ที่จะใช้มัน" อาร์กิวเมนต์
Timmmm

3
หรือโง่ที่จะใช้ถ้าหากกระบวนการที่เป็นปัญหาคือการผลิตของ บริษัท ของคุณ
วอร์เรน P

3
หากกระบวนการถูกฆ่าซ็อกเก็ตจะส่ง RST ไปยังเพียร์ซึ่งราวกับว่ากระบวนการเรียกปิดหรือปิดในซ็อกเก็ตแล้วซ็อกเก็ตส่ง FIN ไม่มีการหมดเวลาที่จำเป็น สถานการณ์การหมดเวลาจะเกิดขึ้นเฉพาะเมื่อกระแสไฟตกหรือสายเคเบิลเครือข่ายถูกถอดออก
ctrl-alt-delor

78

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

ฉันพูดแบบนี้ในฐานะคนที่จะลองฆ่าธรรมดา (15) ก่อนเพราะจะให้โปรแกรมมีโอกาสทำความสะอาด - บางทีแค่เขียนไปที่บันทึก "ออกจาก sig 15" แต่ฉันจะไม่ยอมรับการร้องเรียนใด ๆ เกี่ยวกับพฤติกรรมที่ไม่เหมาะสมในการฆ่า -9

เหตุผล: ลูกค้าจำนวนมากทำสิ่งที่โปรแกรมเมอร์ไม่ต้องการ การทดสอบการฆ่าแบบสุ่ม -9 เป็นสถานการณ์การทดสอบที่ดีและยุติธรรมและหากระบบของคุณไม่สามารถจัดการได้ระบบของคุณจะไม่ทำงาน


2
คุณจะทดสอบ "random kill -9" ได้อย่างไร เมื่อคุณได้รับการฆ่า -9 คุณจะทำเสร็จแล้ว
Karel Bílek

18
@Karel: คุณทดสอบว่าระบบของคุณสามารถกู้คืนได้หรือไม่และทำความสะอาดธุรกรรมใด ๆ ที่ถูกประมวลผลในเวลาที่ SIGKILL
Tadeusz A. Kadłubowski

7
มันไม่เป็นไรที่จะทำkill -9เช่นเดียวกับมันไม่เป็นไรที่จะดึงปลั๊กออก ในขณะที่แน่นอนว่ามีสถานการณ์ที่คุณไม่มีทางเลือกนี่ควรเป็นการกระทำสุดท้าย แน่นอนว่าการดึงสายไฟหรือkill -9ไม่ควรมีผลข้างเคียงเช่นการป้องกันไม่ให้แอปพลิเคชันหรือระบบปฏิบัติการเริ่มต้นใหม่อย่างถูกต้องหากเกิดขึ้น แต่การใช้วิธีการที่แนะนำ ( kill [-15]) หรือการปิดเครื่องตามปกติจะช่วยหลีกเลี่ยงความยุ่งเหยิง คุณขัดจังหวะโปรแกรมและระบบปฏิบัติการเป็นประจำ ไม่ว่าในกรณีใด ๆ มีความเสี่ยงที่จะสูญเสียข้อมูลโดยไม่คำนึงถึงความสมบูรณ์ของรหัส
jlliagre

7
ฉันสงสัยว่า Michael หมายถึง 'ตกลง' คือโปรแกรมของคุณควรจัดการกับสถานการณ์นี้อย่างสง่างามและสามารถล้างข้อมูลบางรูปแบบเมื่อเริ่มต้นใหม่ ตัวอย่างเช่นการล้างไฟล์ PID และอื่น ๆ แทนที่จะโยนของเล่นลงในรถเข็นและปฏิเสธที่จะเริ่ม
gerryk

2
@ gerryk พวกเขาควรจะแน่นอน แต่ปัญหาคือบางคนจะตอบว่าเป็น "ใบอนุญาตในการฆ่า -9" ไม่ว่าสถานการณ์และสภาพแวดล้อมจะเป็นอย่างไร เป็นทัศนคติที่ขาดความรับผิดชอบ
jlliagre

39

ฉันใช้ kill -9 ในแบบเดียวกับที่ฉันใช้ในครัวในเครื่องล้างจาน: ถ้าครัวถูกทำลายโดยเครื่องล้างจานฉันก็ไม่ต้องการมัน

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

เพราะในโลกแห่งความเป็นจริงสิ่งที่สามารถลงไปได้ตลอดเวลาด้วยเหตุผลใดก็ตาม

ผู้คนควรเขียนซอฟต์แวร์ที่ทนต่อการขัดข้อง โดยเฉพาะบนเซิร์ฟเวอร์ คุณควรเรียนรู้วิธีการออกแบบซอฟต์แวร์ที่สมมติว่าสิ่งต่าง ๆ แตกหักผิดพลาดเป็นต้น

เช่นเดียวกันกับซอฟต์แวร์เดสก์ทอป เมื่อฉันต้องการปิดเบราว์เซอร์ของฉันมักจะใช้เวลา AGES ปิด มีอะไรที่เบราว์เซอร์ของฉันต้องการที่จะทำว่าควรใช้เวลานานกว่าที่มากที่สุดกี่วินาที เมื่อฉันขอให้ปิดมันควรจัดการให้ทำทันที เมื่อมันไม่เป็นไรเราก็ดึง kill -9 ออกมาแล้วทำมัน


4
ฉันยอมรับว่าควรเขียนกระบวนการเพื่อให้สามารถทนต่อความล้มเหลวดังกล่าวได้ แต่ฉันคิดว่ามันยังเป็นวิธีที่ไม่ดีที่จะทำเช่นนี้ ฐานข้อมูลจะกู้คืน แต่อาจตรวจพบการยกเลิกหยาบคายจากนั้นเรียกการตรวจสอบการกู้คืนที่สำคัญเมื่อเริ่มต้นใหม่ และสิ่งที่เกี่ยวกับการร้องขอกระบวนการให้บริการ? พวกเขาทั้งหมดจะถูกตัดทันทีลูกค้าอาจมีข้อบกพร่องและล้มเหลวด้วยหรือไม่
Daniel James Bryars

3
ฐานข้อมูลที่ไม่สามารถฆ่าได้ตลอดเวลานั้นไม่ใช่ฐานข้อมูลที่น่าเชื่อถือ นี่เป็นข้อกำหนดขั้นพื้นฐานที่สวยถ้าคุณต้องการความมั่นคง สำหรับลูกค้า: หากพวกเขาไปยุ่งเหยิงและข้อมูลเสียหายเมื่อการเชื่อมต่อถูกตัดพวกเขาจะได้รับการออกแบบที่ไม่ดีเช่นกัน วิธีการจัดการกับการสูญเสียของบริการคือผ่านความซ้ำซ้อนและกลยุทธ์ failover / retry อัตโนมัติ โดยทั่วไปแล้วสำหรับระบบส่วนใหญ่ที่ล้มเหลวอย่างรวดเร็วจะดีกว่าที่จะพยายามกู้คืน
borud

4
@ บอร์ดมันอาจจะไม่ได้เขียนซอฟต์แวร์อย่างสมบูรณ์แบบ แต่เป็นซอฟต์แวร์ที่คนใช้ตลอดเวลา ผู้ดูแลระบบคนใดที่มีความสามารถในการเลือกซอฟต์แวร์ที่เขียนอย่างสมบูรณ์แบบจนถึงการกู้คืนอย่างสง่างามจากการหยุดชะงักในทันที ไม่มาก. ส่วนตัวฉันใช้สคริปต์ปิดและเริ่ม / หยุดกระบวนการผ่านสิ่งนี้ หากพวกเขาไม่ตอบสนองต่อสคริปต์การปิดระบบ (ซึ่งเป็นการส่งสัญญาณที่เหมาะสมกับกระบวนการ) ฉันจะฆ่า -9
Steve Sether

2
ไม่มีความแตกต่างระหว่างการทำอาหารพื้นฐานและจานที่ซับซ้อนมากขึ้นเกี่ยวกับเครื่องมือ ความแตกต่างคือการปรุงอาหาร (อย่างไรก็ตามถ้าคุณใช้เวลาทำอาหารมากเท่าที่คุณทำคุณตระหนักดีว่าความทนทานเป็นข้อกำหนดขั้นต่ำสำหรับเครื่องมือครัวและคนส่วนใหญ่ที่ขายอุปกรณ์ทำครัวให้กับผู้บริโภคจะไม่รู้จักเครื่องมือที่ไม่ดีจากเครื่องมือที่ยอดเยี่ยม)
borud

1
ดังนั้นคุณสนับสนุนให้คนเลอะเทอะเพราะเป็นการยากที่จะทำสิ่งที่ถูกต้อง? มีการเรียกใช้ซอฟต์แวร์มากขึ้นในสภาพแวดล้อมการทำงานที่ไม่ยั่งยืน หากคุณเขียนซอฟต์แวร์ที่ยุ่งเหยิงหากไม่ได้ปิดอย่างถูกต้องคุณจะต้องลำบากใจที่นายจ้างจะจ้างคุณมาเป็นนักพัฒนาซอฟต์แวร์
borud

10

ไม่ได้กล่าวถึงในคำตอบอื่น ๆ ทั้งหมดเป็นกรณีที่kill -9ไม่ทำงานเลยเมื่อกระบวนการเป็น<defunct>และไม่สามารถฆ่า:

ฉันจะฆ่ากระบวนการ <defunct> ที่ parent เป็นผู้เริ่มต้นได้อย่างไร

กระบวนการใดที่หมดอายุแล้วและทำไมจึงไม่ถูกฆ่า?

ดังนั้นก่อนที่คุณพยายามที่จะกระบวนการทำงานจะเห็นสิ่งที่พ่อแม่ของเขาและพยายาม(คำ) หรือ(INT) และสุดท้าย(ฆ่า) เมื่อพ่อแม่kill -9<defunct>ps -ef-15-2-9

หมายเหตุ: สิ่งที่ps -efไม่

ต่อมาแก้ไขและข้อควรระวัง:ดำเนินการด้วยความระมัดระวังเมื่อฆ่ากระบวนการพ่อแม่หรือเด็กของพวกเขาเพราะพวกเขาอาจจะออกจากไฟล์ที่เปิดหรือเสียหายเชื่อมต่อยังไม่เสร็จอาจฐานข้อมูลเสียหาย ฯลฯ จนกว่าคุณจะรู้ว่าสิ่งที่kill -9ไม่สำหรับกระบวนการที่ใช้มันเท่านั้นเป็นที่พึ่งสุดท้าย และหากคุณจำเป็นต้องเรียกใช้ kill ให้ใช้สัญญาณที่ระบุข้างต้นก่อนใช้งาน-9 (KILL)


6

kill -9 1ไม่เคยไม่เคยทำ ยังหลีกเลี่ยงการฆ่าในกระบวนการบางอย่างเช่น Mount` เมื่อฉันต้องฆ่ากระบวนการจำนวนมาก (เช่นพูดว่าเซสชัน X หยุดทำงานและฉันต้องฆ่ากระบวนการทั้งหมดของผู้ใช้บางคน) ฉันกลับลำดับของกระบวนการ ตัวอย่างเช่น:

ps -ef|remove all processes not matching a certain criteria| awk '{print $2}'|ruby -e '$A=stdin.readlines; A.reverse.each{|a| puts "kill -9 #{a}"}'|bash

โปรดทราบว่าkillจะไม่หยุดกระบวนการและปล่อยทรัพยากร สิ่งที่มันทำคือส่งสัญญาณ SIGKILL ไปยังกระบวนการ คุณสามารถจบลงด้วยกระบวนการที่แขวน


1
downvote เป็นคนอื่น แต่ทรัพยากรใดไม่ถูกปล่อย? คุณหมายถึงกระบวนการไม่สามารถทำการล้างปกติได้หรือไม่ สิ่งที่เกี่ยวกับการล็อคไฟล์เซมาฟอร์ ฯลฯ คุณสามารถทำอย่างละเอียด?
มิเคล

ดูเหมือนว่าหน่วยความจำที่ใช้ร่วมกันของ SysV และเซมาฟอร์จะต้องถูกกำจัดอย่างน้อย archives.postgresql.org/pgsql-general/2006-10/msg01065.php
Mikel

8
คำตอบนี้เป็นส่วนที่ทำให้เกิดความสับสนและเป็นส่วนหนึ่งที่ผิด kill -9 1ถูกเพิกเฉยภายใต้ Unices ส่วนใหญ่ ไม่มีความจำเป็นที่จะหลีกเลี่ยงการเป็นkill -9สำหรับmountแต่จุดในมันไม่มีอย่างใดอย่างหนึ่ง ฉันไม่รู้ว่าคุณหมายถึงอะไรโดย“ ย้อนกลับลำดับของกระบวนการ” kill -9ไม่หยุด (ในขณะที่ฆ่า) กระบวนการโดยไม่ต้องให้มันมีโอกาสที่จะบ่น แต่การฆ่าจะไม่เกิดขึ้นทันทีถ้ากระบวนการนี้ในการเรียกระบบที่ไม่ใช่ Interruptible ฆ่ากระบวนการที่มีkill -9ไม่ปล่อยทรัพยากรมากที่สุด แต่ไม่ทั้งหมด
Gilles

5

กระบวนการฆ่าโดยเจตนาไม่ราบรื่น: ข้อมูลอาจสูญหายแอปที่ได้รับการออกแบบมาไม่ดีสามารถทำลายตัวเองในรูปแบบที่ไม่สามารถแก้ไขได้โดยไม่ต้องติดตั้งซ้ำ .. แต่ขึ้นอยู่กับการรู้ว่าอะไรคืออะไรและไม่ปลอดภัยใน สถานการณ์ที่กำหนด และสิ่งที่จะมีความเสี่ยง ผู้ใช้ควรมีความคิดว่ากระบวนการคืออะไรหรือควรทำอะไรและข้อ จำกัด คืออะไร (ดิสก์ IOPS, rss / swap) และสามารถประมาณเวลาที่กระบวนการที่ใช้เวลานานควรจะใช้ (พูดถึงการคัดลอกไฟล์ การเข้ารหัส mp3 การโยกย้ายอีเมลการสำรองข้อมูล [เวลาที่คุณโปรดปรานได้ที่นี่])

ยิ่งกว่านั้นการส่งSIGKILLpid ไม่รับประกันว่าจะฆ่ามัน หากมันติดอยู่ใน syscall หรือ zombie ( Zในps) แล้วมันอาจจะยังคงเป็นซอมบี้ นี้มักจะเป็นกรณีของ ^ Z เป็นกระบวนการระยะยาวและลืมที่จะbgก่อนที่จะพยายามkill -9มัน วิfgจะเชื่อมต่อ stdin / stdout ใหม่และอาจปลดบล็อกกระบวนการจากนั้นตามด้วยกระบวนการยุติ หากติดอยู่ที่อื่นหรืออยู่ในรูปแบบอื่นของเคอร์เนลการหยุดชะงักเพียงรีบูตเท่านั้นที่สามารถลบกระบวนการได้ (กระบวนการซอมบี้นั้นตายไปแล้วหลังจากที่SIGKILLถูกประมวลผลโดยเคอร์เนล (จะไม่มีรหัสผู้ใช้รันอีกต่อไป) ซึ่งมักจะมีเหตุผลเคอร์เนล

นอกจากนี้ถ้าคุณต้องการที่จะฆ่ากระบวนการและลูกทุกคนของตนได้รับเป็นนิสัยของการเรียกkillกับเมื่อตะกี้ PID ไม่เพียง PID ตัวเอง มีการรับประกันไม่ได้SIGHUP, SIGPIPEหรือSIGINTหรือสัญญาณอื่น ๆ ทำความสะอาดขึ้นหลังจากนั้นและมีพวงของกระบวนการปฏิเสธล้าง (จำพันธุ์?) เป็นที่น่ารำคาญ

Bonus evil: kill -9 -1เสียหายเล็กน้อยกว่าkill -9 1(อย่าทำในฐานะ root เว้นแต่ว่าคุณต้องการดูว่าเกิดอะไรขึ้นกับ VM ที่ไม่ได้ใช้งานและไม่สำคัญ)


3

ทำไมคุณไม่ต้องการkill -9ดำเนินการตามปกติ

ตามman 7 signal:

สัญญาณที่ SIGKILL และ SIGSTOP ไม่สามารถถูกจับกีดขวางหรือเพิกเฉยได้

ซึ่งหมายความว่าแอปพลิเคชันที่รับสัญญาณใดสัญญาณหนึ่งเหล่านี้ไม่สามารถ "จับ" พวกมันเพื่อทำการปิดการทำงาน

สิ่งที่คุณควรทำก่อนเริ่มkill -9กระบวนการ

คุณควรตรวจสอบให้แน่ใจก่อนที่จะส่งสัญญาณไปยังกระบวนการที่คุณ:

  1. ตรวจสอบให้แน่ใจว่ากระบวนการไม่ยุ่ง (เช่นการทำงาน ""); การส่งkill -9ไปยังกระบวนการนั้นจะส่งผลให้ข้อมูลนี้สูญหาย
  2. หากกระบวนการเป็นฐานข้อมูลที่ไม่ตอบสนองให้แน่ใจว่าได้ล้างแคชก่อน ฐานข้อมูลบางตัวรองรับการส่งสัญญาณอื่น ๆ ไปยังกระบวนการเพื่อบังคับให้ล้างแคช

3

ฉันได้สร้างสคริปต์ที่ช่วยแก้ไขปัญหานี้โดยอัตโนมัติ

มันขึ้นอยู่กับคำตอบทั้งหมดของฉัน2ในคำถามที่คล้ายกันมากในStackOverflow

คุณสามารถอ่านคำอธิบายทั้งหมดที่นั่น เพื่อสรุปฉันจะแนะนำเพียงSIGTERMและSIGKILLหรือแม้กระทั่งSIGTERM, และSIGINT SIGKILLอย่างไรก็ตามฉันมีตัวเลือกเพิ่มเติมในคำตอบที่สมบูรณ์

โปรดอย่าลังเลที่จะดาวน์โหลด (โคลน) จากที่เก็บ github ไปสู่ ​​killgracefully 1

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