คำสั่ง killall: หยุดโปรเซสตามชื่อ สัญญาณ -9 และการติดตั้ง psmisc

สภาพแวดล้อมทดสอบตระกูล RHELAlmaLinux 9.8psmisc 23.4บัญชี rootDebian 12 · psmisc 23.6 บัญชีผู้ใช้ทั่วไป (รัน killall)
คำสั่งโปรเซส · การตั้งเวลางานkillallตำแหน่ง/usr/bin/killallตรวจสอบเมื่อ 2026-11-03

คำสั่ง killall เป็นคำสั่ง Linux ที่เลือกโปรเซสที่กำลังทำงานจากชื่อโปรแกรมแทนหมายเลขโปรเซส (PID) แล้วส่งสัญญาณไปให้ ถ้าคุณไม่ระบุสัญญาณ คำสั่งจะส่ง SIGTERM (ตามคู่มืออย่างเป็นทางการ) เนื่องจากคำสั่งนี้หยุดโปรเซสที่มีชื่อเดียวกันทั้งหมดในคราวเดียว เราจึงตรวจสอบโปรเซสสี่ตัวที่รันจากสำเนาของ sleep ในชื่ออื่นบนเซิร์ฟเวอร์ AlmaLinux 9 ด้วย pgrep และ ps ก่อน และพบว่าไฟล์ที่รันได้ซึ่งชื่อยาวเกิน 15 ตัวอักษรจะเหลือเพียง 15 ตัวอักษรแรกในชื่อโปรเซส

เรารัน killall เฉพาะกับโปรเซส xxsleep ที่เปิดไว้เพื่อทดสอบด้วยบัญชีผู้ใช้ทั่วไปบนเซิร์ฟเวอร์ Debian 12 เท่านั้น กล่องผลลัพธ์แสดงเอาต์พุตของ rpm, pgrep, ps, pidof, cat และ kill ที่รันด้วยบัญชี root บนเซิร์ฟเวอร์ AlmaLinux 9.8 และเอาต์พุตของ killall ที่รันบนเซิร์ฟเวอร์ Debian 12 หมายเลขโปรเซส (PID) ชื่อโปรเซส พาธของไฟล์ที่รันได้ และชื่อบัญชีถูกเปลี่ยนเป็นค่าตัวอย่าง

1️⃣ ติดตั้งคำสั่ง killall

  • ↪️ แพ็กเกจ psmisc และการตรวจสอบเวอร์ชัน

killall อยู่ในแพ็กเกจ psmisc เมื่อตรวจสอบด้วย rpm บนเซิร์ฟเวอร์ AlmaLinux 9.8 ว่า /usr/bin/killall เป็นของแพ็กเกจใด ผลที่ได้คือเวอร์ชัน psmisc 23.4

rpm -qf --qf '%{NAME} %{VERSION}\n' /usr/bin/killall
psmisc 23.4

รายการไฟล์ของแพ็กเกจเดียวกันที่ดูด้วย rpm -ql มี pstree และ fuser อยู่ด้วย

ถ้าเห็น [command not found] ซึ่งหมายถึงหาคำสั่งไม่พบ ให้ติดตั้งแพ็กเกจ psmisc ตระกูล RHEL ใช้ [dnf install psmisc] และตระกูล Debian ใช้ [apt install psmisc] บนเซิร์ฟเวอร์ Debian 12 มี psmisc 23.6 ติดตั้งอยู่แล้ว และ killall อยู่ที่ /usr/bin/killall

เมื่อตรวจสอบบนเซิร์ฟเวอร์ AlmaLinux 9.8 พบว่า pkill ที่ชื่อคล้ายกันอยู่ในแพ็กเกจ procps-ng ส่วน kill เป็นคำสั่งในตัวของเชลล์

2️⃣ วิธีใช้คำสั่ง killall

  • ↪️ ตรวจสอบเป้าหมายตามชื่อโปรเซส

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

เนื่องจากโปรเซสที่มีชื่อเดียวกันจะหยุดพร้อมกันทั้งหมด ให้ตรวจสอบด้วย pgrep ก่อนว่ามีอะไรทำงานอยู่ในชื่อนั้น เราคัดลอก sleep ไปไว้ในโฟลเดอร์งานในชื่อ xxsleep-a1, xxsleep-a2 และ xxsleep-longname-x1 แล้วรัน xxsleep-a1 สองครั้ง รวมเป็นสี่โปรเซส จากนั้นแสดงหมายเลขและชื่อด้วย -l

pgrep -l xxsleep
2141 xxsleep-a1
2142 xxsleep-a1
2150 xxsleep-a2
2155 xxsleep-longnam

บรรทัดที่สี่มีชื่อไฟล์ที่รันได้เป็น xxsleep-longname-x1 แต่ชื่อโปรเซสถูกตัดไว้ที่ xxsleep-longnam

เมื่อเพิ่ม -a จะแสดงบรรทัดคำสั่งที่รันทั้งหมด xxsleep-a1 สองตัวที่ชื่อเหมือนกันแยกได้จากอาร์กิวเมนต์วินาทีท้ายคำสั่ง คือ 300 และ 310

pgrep -a xxsleep
2141 /root/work/xxsleep-a1 300
2142 /root/work/xxsleep-a1 310
2150 /root/work/xxsleep-a2 320
2155 /root/work/xxsleep-longname-x1 330

ถ้าต้องการหาเฉพาะโปรเซสที่ชื่อตรงกันทุกตัวอักษร ให้เพิ่ม -x ผลของ xxsleep-a1 คือหมายเลขสองตัว

pgrep -x xxsleep-a1
2141
2142

ถ้าต้องการใส่ชื่อเดียวตามที่เป็นแล้วดูเฉพาะหมายเลข ให้ใช้ pidof เมื่อค้นหา xxsleep-a1 หมายเลขทั้งสองแสดงในบรรทัดเดียว

pidof xxsleep-a1
2142 2141

ps จะแสดงเฉพาะโปรเซสที่ชื่อตรงกันทุกตัวอักษร เมื่อระบุหลายชื่อคั่นด้วยจุลภาคหลัง -C

ps -o pid,comm -C xxsleep-a1,xxsleep-a2
    PID COMMAND
   2141 xxsleep-a1
   2142 xxsleep-a1
   2150 xxsleep-a2

บนเซิร์ฟเวอร์ Debian 12 เราเปิดสี่โปรเซสด้วยชื่อเดียวกันแล้วรัน [killall xxsleep-a1] ปรากฏว่าไม่มีเอาต์พุตใดและจบด้วยรหัสออก 0 เมื่อค้นหาอีกครั้งด้วย pgrep พบว่า xxsleep-a1 ทั้งสองหายไป เหลือเพียง xxsleep-a2 และ xxsleep-longname-x1 ถ้าระบุพาธที่มีเครื่องหมายทับ (/) แทนชื่อ คำสั่งจะเลือกโปรเซสที่รันไฟล์นั้นโดยไม่สนชื่อ (ตามคู่มืออย่างเป็นทางการ)

เมื่อระบุชื่อที่ไม่มีอยู่คือ xxsleep-zz จะมีบรรทัดที่ต่อท้ายชื่อด้วย [no process found] และจบด้วยรหัสออก 1 รหัสออกจะเป็น 0 ก็ต่อเมื่อหยุดโปรเซสได้อย่างน้อยหนึ่งตัวสำหรับทุกชื่อที่ระบุ (ตามคู่มืออย่างเป็นทางการ)

killall xxsleep-zz
xxsleep-zz: no process found

ถ้าต้องการหยุดเพียงโปรเซสเดียวที่รู้หมายเลขอยู่แล้ว ให้ใช้ คำสั่ง kill ของ Linux ส่งสัญญาณไปยังหมายเลขนั้นเท่านั้น

3️⃣ ตัวเลือกของคำสั่ง killall

  • ↪️ -e และชื่อ 15 ตัวอักษร, -i, -v, -u, -r

เมื่ออ่านชื่อของโปรเซสที่เปิดด้วย xxsleep-longname-x1 จาก /proc/PID/comm พบว่าเหลือเพียง 15 ตัวอักษรแรกคือ xxsleep-longnam

cat /proc/2155/comm
xxsleep-longnam

เรารัน pgrep ด้วย xxsleep-longname ที่ยาว 16 ตัวอักษร

pgrep -a xxsleep-longname

คำสั่งจบโดยไม่มีเอาต์พุตด้วยรหัสออก 1 และเมื่อค้นหาอีกครั้งด้วย xxsleep-longnam ที่ยาว 15 ตัวอักษร โปรเซสนั้นก็ปรากฏ

pgrep -l xxsleep-longnam
2155 xxsleep-longnam

เมื่อ killall ได้รับชื่อที่ยาวเกิน 15 ตัวอักษร และมีโปรเซสที่อ่านชื่อเต็มไม่ได้ คำสั่งจะเลือกทุกโปรเซสที่ 15 ตัวอักษรแรกตรงกันเป็นเป้าหมาย ถ้าเพิ่ม -e จะข้ามรายการเหล่านั้น (ตามคู่มืออย่างเป็นทางการ) บนเซิร์ฟเวอร์ Debian 12 เมื่อระบุ 15 ตัวอักษรแรก xxsleep-longnam พร้อม -e และ -v จะมีบรรทัดแจ้งว่าข้ามโปรเซสอื่นสามตัวที่ชื่อถูกตัดที่ 15 ตัวอักษร แล้วจบด้วย [no process found]

killall -e -v xxsleep-longnam
killall: skipping partial match quota_events_un(37)
killall: skipping partial match acpi_thermal_pm(112)
killall: skipping partial match ext4-rsv-conver(246)
xxsleep-longnam: no process found

เมื่อระบุชื่อเต็ม xxsleep-longname-x1 หลังบรรทัดข้ามแบบเดียวกันจะมีบรรทัดที่แสดงว่าส่งสัญญาณไปยังโปรเซสนั้นแล้ว

killall -e -v xxsleep-longname-x1
killall: skipping partial match quota_events_un(37)
killall: skipping partial match acpi_thermal_pm(112)
killall: skipping partial match ext4-rsv-conver(246)
Killed xxsleep-longname-x1(2155) with signal 15

เมื่อเพิ่ม -v จะมีบรรทัดที่มีชื่อ หมายเลข และหมายเลขสัญญาณ แสดงสำหรับทุกโปรเซสที่ได้รับสัญญาณ

killall -v xxsleep-a2
Killed xxsleep-a2(2150) with signal 15

-i จะถามทีละโปรเซสว่าจะหยุดหรือไม่ เราเปิด xxsleep-a1 สองตัวอีกครั้งแล้วส่ง y และ n ตามลำดับผ่านอินพุตมาตรฐาน คำถามทั้งสองแสดงต่อกันในบรรทัดเดียว และมีเพียง xxsleep-a1 ตัวแรกที่หยุด ส่วนตัวที่สองยังอยู่

printf 'y\nn\n' | killall -i xxsleep-a1
Kill xxsleep-a1(2171) ? (y/N) Kill xxsleep-a1(2172) ? (y/N)

-u จะเลือกเฉพาะโปรเซสที่บัญชีนั้นเป็นเจ้าของ และถ้าไม่ระบุชื่อ โปรเซสทั้งหมดของบัญชีนั้นจะเป็นเป้าหมาย เมื่อระบุ xxsleep-a1 ต่อท้ายชื่อบัญชีด้วย สัญญาณก็ส่งไปยัง xxsleep-a1 ที่เหลืออยู่เท่านั้น

killall -v -u user xxsleep-a1
Killed xxsleep-a1(2172) with signal 15

-o และ -y เลือกตามเวลาที่เริ่มทำงาน โดยเขียนเวลาเป็นตัวเลขตามด้วยหน่วย s, m, h, d, w, M หรือ y เช่น [-o 30m]

-r อ่านชื่อเป็นนิพจน์ปกติแบบขยาย เมื่อส่งรูปแบบ ^xxsleep-a ให้ pgrep จะได้สามโปรเซสที่ขึ้นต้นด้วย xxsleep-a

pgrep -l '^xxsleep-a'
2141 xxsleep-a1
2142 xxsleep-a1
2150 xxsleep-a2

-w จะรอโดยตรวจสอบทุกวินาทีจนกว่าโปรเซสที่ได้รับสัญญาณจะหายไปทั้งหมด ถ้ามีโปรเซสที่เพิกเฉยต่อสัญญาณหรือค้างอยู่ในสถานะซอมบี้ ก็อาจรอไม่สิ้นสุด

ตารางแรกด้านล่างคือคำสั่งตรวจสอบและตัวเลือก killall ที่รันจริงในบทความนี้ ส่วนตัวเลือก killall ที่ไม่ได้รันรวบรวมไว้ในตารางที่สองตามคู่มืออย่างเป็นทางการ

📌 การตรวจสอบโปรเซสและ killall: ผลที่รันในบทความนี้

คำสั่งหน้าที่ผลที่เห็นในบทความนี้
pgrep -l ชื่อหมายเลขและชื่อของโปรเซสที่ชื่อมีคำนั้นxxsleep ได้สี่บรรทัด ชื่อยาวแสดงแค่ 15 ตัวอักษรแรก xxsleep-longnam
pgrep -a ชื่อหมายเลขและบรรทัดคำสั่งทั้งหมดแยก xxsleep-a1 สองตัวที่ชื่อเหมือนกันด้วยอาร์กิวเมนต์ท้าย 300 และ 310
pgrep -x ชื่อเฉพาะหมายเลขของโปรเซสที่ชื่อตรงกันทุกตัวอักษรxxsleep-a1 ได้สองบรรทัดคือ 2141 และ 2142
pidof ชื่อหมายเลขที่ทำงานด้วยชื่อนั้นในบรรทัดเดียวxxsleep-a1 ได้ 2142 2141
ps -o pid,comm -C ชื่อหมายเลขและชื่อของโปรเซสที่ชื่อตรงกันทุกตัวอักษร ระบุหลายชื่อคั่นด้วยจุลภาคxxsleep-a1 สองบรรทัดและ xxsleep-a2 หนึ่งบรรทัด
cat /proc/PID/commชื่อโปรเซส (ไม่เกิน 15 ตัวอักษรแรก)2155 คือ xxsleep-longnam
killall ชื่อSIGTERM ไปยังโปรเซสที่มีชื่อนั้นxxsleep-a1 สองตัวหยุดและได้รหัสออก 0 ส่วนชื่อที่ไม่มีอยู่ xxsleep-zz ได้ no process found และรหัสออก 1
killall -e ชื่อชื่อที่ยาวเกิน 15 ตัวอักษรเฉพาะเมื่อชื่อเต็มตรงกันxxsleep-longnam ได้ no process found ส่วน xxsleep-longname-x1 หยุด
killall -v ชื่อแสดงผลสำหรับทุกโปรเซสที่ส่งสัญญาณไปKilled xxsleep-a2(2150) with signal 15
killall -i ชื่อถามยืนยันทีละโปรเซสก่อนหยุดเมื่อใส่ y และ n มีเพียง xxsleep-a1 ตัวแรกที่หยุด
killall -u ชื่อบัญชีเฉพาะโปรเซสที่บัญชีนั้นเป็นเจ้าของเมื่อระบุพร้อมชื่อ มีเพียง xxsleep-a1 ของบัญชีนั้นที่หยุด
killall -9 ชื่อSIGKILL แทน SIGTERMKilled xxsleep-a2(2173) with signal 9

📎 ตัวเลือกอื่น: ตามคู่มือทางการ

ตัวเลือกหน้าที่
-I, --ignore-caseเปรียบเทียบชื่อโดยไม่แยกตัวพิมพ์ใหญ่และพิมพ์เล็ก
-g, --process-groupส่งสัญญาณไปยังกลุ่มโปรเซสแทนตัวโปรเซส (กลุ่มละหนึ่งครั้ง)
-l, --listรายชื่อสัญญาณที่รู้จัก
-n, --ns PIDเฉพาะโปรเซสใน PID namespace เดียวกับ PID นั้น ค่าเริ่มต้นคือทุก namespace
-o, --older-than เวลาเฉพาะโปรเซสที่เริ่มก่อนเวลานั้น (หน่วย s, m, h, d, w, M, y)
-q, --quietไม่แจ้งแม้ไม่มีโปรเซสใดถูกหยุด
-r, --regexpอ่านชื่อเป็นนิพจน์ปกติแบบขยาย
-s, --signal สัญญาณสัญญาณที่จะส่งแทน SIGTERM
-V, --versionแสดงข้อมูลเวอร์ชัน
-w, --waitรอจนกว่าโปรเซสที่ได้รับสัญญาณจะหายไปทั้งหมด
-y, --younger-than เวลาเฉพาะโปรเซสที่เริ่มหลังเวลานั้น
-Z, --context รูปแบบเฉพาะโปรเซสที่บริบทความปลอดภัยตรงกับรูปแบบนิพจน์ปกติแบบขยาย เขียนไว้ก่อนอาร์กิวเมนต์อื่น และละชื่อได้

🔲 ตัวจำลองคำสั่ง killall

ตัวจำลองด้านล่างเริ่มต้นด้วยรายการโปรเซส xxsleep สี่ตัวและ xxsleep-a2 ของบัญชีตัวอย่าง user1 แตะชิปเพื่อเปรียบเทียบว่าบรรทัดใดหายไปจากรายการเมื่อใช้ [killall -v], [-i] และ [-u] ข้อความเอาต์พุตของ killall เลียนแบบเอาต์พุตที่ได้จากการรันบนเซิร์ฟเวอร์ Debian 12

ตัวจำลองคำสั่ง killallpsmisc 23.4
[root@server work]#
ทำงานเฉพาะในเบราว์เซอร์ของคุณ รายการด้านซ้ายเป็นค่าตัวอย่าง และ killall เป็นการเลียนแบบตามข้อความเอาต์พุตที่ได้จากการรันบนเซิร์ฟเวอร์ Debian 12 โดยลบบรรทัดออกจากรายการเท่านั้น

4️⃣ สัญญาณของ killall

  • ↪️ ตัวเลือก -s, killall -9 และหมายเลขสัญญาณ

สัญญาณที่จะส่งระบุได้ด้วยชื่อ เช่น [-HUP] หรือ [-SIGHUP] ด้วยหมายเลข เช่น [-1] หรือหลังตัวเลือก -s (ตามคู่มืออย่างเป็นทางการ) [killall -9 ชื่อโปรเซส] จะส่งสัญญาณหมายเลข 9 คือ SIGKILL ซึ่งเป็นสัญญาณที่โปรเซสดักจับหรือเพิกเฉยไม่ได้ (ตามคู่มืออย่างเป็นทางการ) โปรเซสจึงหยุดโดยไม่ได้เก็บกวาดงาน ด้วยเหตุนี้จึงใช้ส่งเมื่อสัญญาณเริ่มต้น SIGTERM หยุดโปรเซสไม่ได้

บนเซิร์ฟเวอร์ Debian 12 เมื่อเพิ่ม -9 พร้อม -v ให้ xxsleep-a2 ที่เปิดใหม่ จะมีบรรทัดที่แสดงหมายเลขสัญญาณ 9

killall -9 -v xxsleep-a2
Killed xxsleep-a2(2173) with signal 9

เราตรวจสอบชื่อและหมายเลขสัญญาณด้วย [kill -l] ซึ่ง killall เองก็มีตัวเลือก -l ที่แสดงชื่อสัญญาณที่รู้จัก

kill -l
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
 6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
63) SIGRTMAX-1	64) SIGRTMAX

เมื่อใส่หมายเลขเดียว จะแสดงเฉพาะชื่อของสัญญาณนั้น 15 ที่ killall ส่งเป็นค่าเริ่มต้นคือ TERM และ 9 ที่ส่งด้วย -9 คือ KILL

kill -l 15
TERM
kill -l 9
KILL

ถ้าระบุชื่อสัญญาณที่ไม่มีในรายการ จะมีข้อความรูปแบบ [FOO: unknown signal; killall -l lists signals.] (ตามคู่มืออย่างเป็นทางการและข้อความของโปรแกรม)

🔢 FAQ & เนื้อหาแนะนำ

killall เป็นคำสั่งของแพ็กเกจ psmisc ส่วน pkill เป็นคำสั่งของแพ็กเกจ procps-ng เช่นเดียวกับ pgrep โดย pkill ค้นหาบางส่วนของชื่อเป็นนิพจน์ปกติแบบขยายเหมือน pgrep ส่วน killall จะอ่านชื่อเป็นนิพจน์ปกติก็ต่อเมื่อเพิ่ม -r (ตามคู่มืออย่างเป็นทางการ)

คู่มืออย่างเป็นทางการของ psmisc ระบุว่าบนระบบที่ไม่ใช่ Linux คำสั่ง [killall ชื่อ] อาจทำงานต่างจากที่คาดไว้ และต้องระวังเป็นพิเศษเมื่อรันด้วยบัญชีผู้ดูแลระบบ บนระบบอื่นให้ตรวจสอบจากคู่มือของระบบนั้นก่อน

จำนวนชื่อที่ระบุได้ในครั้งเดียวมีขีดจำกัด คือขนาดของจำนวนเต็ม unsigned long คูณด้วย 8 ระบบ 64 บิตมักเป็น 64 และระบบ 32 บิตเป็น 32 (ตามคู่มืออย่างเป็นทางการ)

🔗 เนื้อหาแนะนำ
ตรวจสอบโปรเซส · ps คำสั่ง ps (คำสั่งโปรเซส) คำสั่งที่แสดงโปรเซสที่กำลังทำงานและสถานะ ใช้ตรวจสอบหมายเลขและบรรทัดคำสั่งก่อนหยุดโปรเซสตามชื่อ อ่านบทความ → ตรวจโปรเซสด้วยคำสั่ง ps

ℹ️ ประกาศเรื่องลิงก์แอฟฟิลิเอต
เนื้อหาของเว็บไซต์นี้มีลิงก์แอฟฟิลิเอต หากผู้เข้าชมซื้อสินค้าหรือบริการผ่านลิงก์เหล่านี้ เว็บไซต์นี้จะได้รับค่าคอมมิชชันจากผู้ขาย ในกระบวนการนี้ ราคาที่ผู้ซื้อจ่าย(ราคาจะลดลงเมื่อมีโปรโมชัน↓)จะไม่สูงขึ้นแต่อย่างใด ราคา ส่วนลด และข้อมูลสต็อกที่แสดงเป็นข้อมูล ณ เวลาที่เขียนและอาจต่างจากความเป็นจริง โปรดตรวจสอบกับผู้ขายอีกครั้งก่อนซื้อ การเลือกและการประเมินสินค้าเขียนตามเกณฑ์ของเราเอง และการได้รับค่าคอมมิชชันหรือไม่ไม่มีผลต่อลำดับการแนะนำหรือเนื้อหาการประเมิน

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

Prove your humanity: 6   +   3   =