บรรทัดคำสั่ง Linux: Kill vs Kill -9?


2

ดังนั้นฉันจึงตั้งค่าเชลล์สคริปต์เพื่อปรับใช้warไฟล์สดกับเซิร์ฟเวอร์ Tomcat โดยอัตโนมัติ ฉันเรียก shellscript เพื่อหยุด tomcat ( shutdown.sh) จากนั้นฉันก็ฆ่าcatalinaPID แต่ฉันสังเกตว่ามันใช้เวลาประมาณหนึ่งนาทีในการฆ่ากระบวนการและกระบวนการยังคงทำงานอยู่เมื่อสคริปต์เริ่มทำงานของฉันถูกเรียกใช้ ในสคริปต์เริ่มต้นของฉันฉันมีเงื่อนไขที่จะเริ่มต้น Tomcat เมื่อ Tomcat ไม่ทำงาน เนื่องจากกระบวนการเก่ายังคงใช้งานอยู่คราวจะไม่เริ่มใหม่ถ้าฉันเก็บตรรกะนี้ไว้ ฉันสามารถลบเงื่อนไขนั้นออกไปได้เสมอ แต่ฉันไม่แน่ใจว่าจะเกิดอะไรขึ้นกับสอง tomcats ที่ทำงานพร้อมกันแม้ว่าจะเป็นเพียงไม่กี่วินาทีก็ตาม

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

ขอบคุณตัน!

คำตอบ:


3

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

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


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