-HUP ทำอะไรเมื่อใช้กับ killall?


16

บางครั้งเมื่อฉันเรียกใช้คำสั่งจากสถานีร่วมงานจะแนะนำหรือแก้ไขสคริปต์ของฉันที่จะแสดงkillallkillall -HUP

สิ่งที่ไม่-HUPเป็นส่วนหนึ่งทำอย่างไร


นี่คือหน้า man ของ Apple สำหรับ killall: developer.apple.com/library/mac/documentation/Darwin/Reference/ ...... ดูเหมือนว่า h = help, u = user และ p = กระบวนการ แต่นั่นเป็นตัวพิมพ์เล็กทั้งหมด ฉันไม่เห็นพารามิเตอร์ตัวพิมพ์ใหญ่ในหน้าคน แต่ตัวพิมพ์ใหญ่อาจมีความหมายที่แตกต่างกันโดยสิ้นเชิง - หรืออาจไม่มีอยู่จริง ..
David DelMonte

คำตอบ:


22

-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 ใช้ได้ดูที่บทความวิกิพีเดียนี้


2
ที่ด้านล่างของหน้า man สำหรับ killall ในส่วน SEE ALSO คือลิงค์ไปยังหน้า man killซึ่งแสดงสัญญาณบางอย่างและสิ่งที่พวกเขาทำ
Ian C.

ฉันเป็นหนึ่งใน#FAILคนเหล่านั้นที่ไม่เคยอ่านสวิตช์เลย ขอขอบคุณ!
Danijel-James W

ในฐานะ "สัญญาณ Hangup" โดยทั่วไป HUP จะถูกส่งไปยังโปรแกรมเมื่อผู้ใช้ออกจากระบบหรือยกเลิกเชลล์ที่เริ่มต้นโปรแกรม หากการจับสัญญาณไม่ได้ถูกใช้งานโดยโปรแกรมโดยทั่วไปโปรแกรมจะยุติลง ดังที่ระบุไว้ข้างต้นโปรแกรมที่รับสัญญาณสามารถใช้งานกิจกรรมที่ต้องการตามการจับสัญญาณตามที่ระบุโดยตัวอย่าง Apache
nachbar

2

สัญญาณ-HUPคือ "วางสาย" ที่อาจเรียกให้แอปหยุดอ่านไฟล์ปรับแต่งแล้วเริ่มใหม่อีกครั้ง มันไม่จำเป็นต้องดีกว่าการใช้โดยไม่ต้อง

killall Finder

และ

killall -HUP Finder

มีความนับถือเหมือนกัน ใน OS X Finder จะเปิดใช้งานอีกครั้ง แต่จะอ่านไฟล์การกำหนดค่าอีกครั้ง นี่อาจไม่ใช่กรณีที่แอปพลิเคชันที่ทำงานอยู่ไม่มี-HUPฟังก์ชันในตัว ในฐานะที่เป็นโปสเตอร์ก่อนหน้านี้พูดถึง Apache มันอ่านว่าเป็นไฟล์กำหนดค่า แต่ไม่สามารถเปิดได้อีก

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