บางครั้งเมื่อฉันเรียกใช้คำสั่งจากสถานีร่วมงานจะแนะนำหรือแก้ไขสคริปต์ของฉันที่จะแสดงkillallkillall -HUP
สิ่งที่ไม่-HUPเป็นส่วนหนึ่งทำอย่างไร
บางครั้งเมื่อฉันเรียกใช้คำสั่งจากสถานีร่วมงานจะแนะนำหรือแก้ไขสคริปต์ของฉันที่จะแสดงkillallkillall -HUP
สิ่งที่ไม่-HUPเป็นส่วนหนึ่งทำอย่างไร
คำตอบ:
-HUPตัวเลือกที่เป็นสัญญาณที่ส่งไปยังกระบวนการโดยkillallคำสั่ง อาจเป็นเรื่องยากที่จะบอกเล็กน้อย แต่รายการที่เกี่ยวข้องในkillallคู่มือคือ:
-SIGNAL Send a different signal instead of the default TERM. The signal may be specified
either as a name (with or without a leading SIG), or numerically.
ความแตกต่างระหว่างTERMสัญญาณเริ่มต้นที่killallส่งและHUPสัญญาณขึ้นอยู่กับโปรแกรมที่คุณส่งสัญญาณเป็นหลัก เมื่อสิ้นสุดโปรแกรมพวกเขาจะได้รับค่าสัญญาณขัดจังหวะที่แตกต่างกัน ดังนั้นโปรแกรมสามารถจับอินเทอร์รัปต์และตัดสินใจตามมูลค่าหากพวกเขาควรทำสิ่งใดสิ่งหนึ่ง
TERMสัญญาณ (อดีต "ยุติสัญญาณ") มักจะถูกส่งไปยังโปรแกรมที่จะขอเลิกสัญญา (ซึ่งเป็นรุ่น politer ของการบังคับให้เลิกจ้างกับKILLสัญญาณ) โปรแกรมมีอิสระที่จะจับและไม่สนใจTERMสัญญาณ ไม่จำเป็นต้องยุติหากไม่ต้องการและสามารถเพิกเฉยต่อสัญญาณนี้ได้อย่างสมบูรณ์
HUPสัญญาณ (อดีต "สัญญาณ hangup") มักจะถูกส่งไปยังโปรแกรมที่จะขอให้เริ่มใหม่อีกครั้งอ่านการตั้งค่าทั้งหมดในกระบวนการ พฤติกรรมที่แท้จริงของโปรแกรมขึ้นอยู่กับการใช้งานเฉพาะโปรแกรม ไม่ใช่ทุกโปรแกรมที่จับได้HUPและไม่จำเป็นต้องมีการประชุมหรือเชื่อ ตัวอย่างเช่นเว็บเซิร์ฟเวอร์ Apache จะรับHUPสัญญาณและอ่านไฟล์การกำหนดค่าทั้งหมดอีกครั้ง แต่จะไม่เริ่มต้นกระบวนการใหม่
หากคุณต้องการยุติกระบวนการอย่างแท้จริงและไม่ต้องกังวลว่าจะจับและเชื่อฟังสัญญาณหรือไม่ใช้KILLสัญญาณ ไม่สามารถถูกดักจับหรือละเว้นได้และผลลัพธ์ในกระบวนการจะสิ้นสุดลง
สำหรับการตรวจสอบที่ดีของสัญญาณ POSIX ใช้ได้ดูที่บทความวิกิพีเดียนี้
#FAILคนเหล่านั้นที่ไม่เคยอ่านสวิตช์เลย ขอขอบคุณ!
สัญญาณ-HUPคือ "วางสาย" ที่อาจเรียกให้แอปหยุดอ่านไฟล์ปรับแต่งแล้วเริ่มใหม่อีกครั้ง มันไม่จำเป็นต้องดีกว่าการใช้โดยไม่ต้อง
killall Finder
และ
killall -HUP Finder
มีความนับถือเหมือนกัน ใน OS X Finder จะเปิดใช้งานอีกครั้ง แต่จะอ่านไฟล์การกำหนดค่าอีกครั้ง นี่อาจไม่ใช่กรณีที่แอปพลิเคชันที่ทำงานอยู่ไม่มี-HUPฟังก์ชันในตัว ในฐานะที่เป็นโปสเตอร์ก่อนหน้านี้พูดถึง Apache มันอ่านว่าเป็นไฟล์กำหนดค่า แต่ไม่สามารถเปิดได้อีก