ในขั้นต้นkill
คำสั่งสามารถฆ่ากระบวนการเพียงอย่างเดียวในภายหลังได้รับการkill
ปรับปรุงเพื่อให้คุณสามารถส่งสัญญาณใด ๆ
ตั้งแต่เวอร์ชัน 7 ของ Unix (1979) ค่าเริ่มต้นคือการส่งสัญญาณกระบวนการในลักษณะที่สามารถถูกจับได้และจัดการได้อย่างสง่างามหรือถูกละเว้น (โดยการส่งสัญญาณSIGTERM ) แต่ก็สามารถใช้ดึงพรมออกจากใต้ กระบวนการ (a kill -9
ส่งสัญญาณSIGKILLซึ่งไม่สามารถจับได้และไม่สามารถข้ามได้)
พื้นหลัง
คอมพิวเตอร์และยูนิกซ์โดยเฉพาะนั้นเต็มไปด้วยคำอุปมา
อุปมาหลักสำหรับกระบวนการคือสิ่งมีชีวิตที่เกิดชีวิตและตาย
ในระบบปฏิบัติการยูนิกซ์กระบวนการทั้งหมดยกเว้นinitมีพ่อแม่ผู้ปกครองและกระบวนการใด ๆ ที่spawnsกระบวนการอื่น ๆ ที่มีเด็ก กระบวนการอาจกลายเป็นเด็กกำพร้า (ถ้าพ่อแม่ของพวกเขาเสียชีวิต) และอาจกลายเป็นซอมบี้ได้หากพวกเขาแขวนรอบหลังความตาย
ดังนั้นkill
คำสั่งที่สอดคล้องกับคำอุปมานี้
โบราณคดียูนิกซ์
จากหน้าคู่มือจาก Unix รุ่น 4 (รุ่นที่kill
มีการแนะนำพร้อมด้วยps
) เราพบ:
NAME
kill - do in an unwanted process
SYNOPSIS
kill processid ...
DESCRIPTION
Kills the specified processes.
The processid of each asynchronous process
started with `&' is reported by the shell.
Processid's can also be found by using ps (I).
The killed process must have
been started from the same typewriter
as the current user, unless
he is the superuser.
SEE ALSO
ps(I), sh(I)
ฉันชอบหน้าสุดท้ายของหน้านี้โดยเฉพาะ:
BUGS
Clearly people should only be allowed to kill
processes owned by them, and having the same typewriter
is neither necessary nor sufficient.
เมื่อถึงเวลาฉบับที่ห้าkill
คำสั่งที่ได้รับการโอเวอร์โหลดเพื่ออนุญาตให้ส่งสัญญาณใด ๆ
จากคู่มือโปรแกรมเมอร์ Unix, Fifth Edition (p70):
If a signal number preceded by "-" is given
as an argument, that signal is sent instead of
kill (see signal (II)).
แม้ว่าจะเป็นค่าเริ่มต้นคือการส่งสัญญาณ 9 เนื่องจากสัญญาณ 15 ยังไม่มีอยู่ (ดูหน้า 150)
กับรุ่น 6kill
หน้าคนไม่ได้กล่าวถึงเครื่องพิมพ์ดีดเดียวกันข้อผิดพลาด
มันเป็นเพียงกับรุ่นที่ 7 ของ Unix ที่มีการแนะนำสัญญาณ 15 (ดูที่สัญญาณ (2)และkill (1) man pages สำหรับ v7) และkill
สลับไปที่แทนที่จะใช้สัญญาณ 9