คุมโปรแกรมที่รันอยู่
process = โปรแกรมที่กำลังรัน เครื่องช้า/ค้าง ใช้ Ctrl+C, ps, kill จัดการได้ ทุก process มี PID เป็นเลขประจำตัว
คำสั่งจัดการไฟล์กับ pipe ครบแล้ว แต่บางครั้งปัญหาไม่ได้อยู่ที่ไฟล์ มันอยู่ที่ โปรแกรมที่กำลังรันอยู่
เครื่องช้าเพราะเปิดโปรแกรมหลายตัว Chrome ค้างคลิกอะไรก็ไม่ติด บทนี้จะสอนดูว่ามีอะไรรันอยู่ และวิธีปิดของที่ค้าง รวมทั้ง Ctrl + C ที่บอกไว้ตั้งแต่บทแรก
โปรแกรมที่รันอยู่ = พนักงานในร้านสะดวกซื้อ
ลองนึกถึงร้านสะดวกซื้อใกล้บ้าน ในร้านมีพนักงานหลายคนทำงานพร้อมกัน คนหนึ่งคิดเงิน อีกคนเติมของขึ้นชั้น อีกคนชงกาแฟตามออเดอร์
เครื่องคอมเหมือนกัน ตอนเปิดเครื่องมา มีโปรแกรมหลายตัวรันพร้อมกัน Chrome เปิดอยู่ LINE เด้ง notification Spotify เล่นเพลง Word เปิดไว้ทำการบ้าน
ฝรั่งเรียกโปรแกรมที่กำลังรันแต่ละตัวว่า process (ออกเสียง โพรเซส) แต่ละ process มีเลขประจำตัวชื่อ PID (process ID) เหมือนเลขประจำตัวพนักงานแต่ละคน
Ctrl + C หยุดคำสั่งที่กำลังรันใน Terminal
ที่ค้างไว้ตั้งแต่บทแรกมาถึงตรงนี้แล้ว เวลาพิมพ์คำสั่งใน Terminal แล้วมันค้าง วนลูปไม่หยุด หรือพิมพ์ผิดอยากยกเลิก กด Ctrl + C (กด Ctrl ค้าง แล้วกด C) Terminal จะหยุดคำสั่งนั้นทันที
ตัวอย่างที่เจอบ่อย: พิมพ์ cat เปล่าๆ ลืมใส่ชื่อไฟล์ Terminal จะรอ input ไปเรื่อยๆ จบไม่ได้ กด Ctrl + C คือทางออก
ใช้ได้ทั้ง Mac, Linux, Windows ต่อให้กำลังโหลดของจากเน็ต กด Ctrl + C ก็ไม่พังแน่นอน
ps ดูว่ามีโปรแกรมอะไรรันอยู่
อยากรู้ว่าตอนนี้เครื่องรันโปรแกรมอะไรอยู่บ้าง ใช้ ps (ย่อจาก process status)
psจะได้รายชื่อ process พร้อม PID ของแต่ละตัว
ps เปล่าๆ โชว์แค่ process ของ Terminal หน้าต่างนี้ อยากเห็นทั้งเครื่องใช้ ps aux หรือ top ที่อัพเดทแบบเรียลไทม์ (เหมือน Activity Monitor บน Mac หรือ Task Manager บน Windows)
kill หยุด process ที่ค้าง
เจอ process ค้าง หรือกินทรัพยากรเครื่องเยอะ อยากปิด ใช้ kill ตามด้วย PID
kill 1234เลข 1234 คือ PID ของ process ที่อยากปิด เครื่องจะส่งสัญญาณให้ process นั้นหยุดเองอย่างสุภาพ ปิดไฟล์ที่ค้างอยู่ก่อนแล้วค่อยจบ
ถ้า process ดื้อไม่ยอมหยุด ใช้ kill -9 แทน เป็นการบังคับหยุดทันที ไม่ถามไม่รอ
kill -9 1234psดูว่ามีโปรแกรมอะไรรันอยู่| PID | ชื่อ | CPU% |
|---|---|---|
| 1234 | Chrome | 45% |
| 2345 | LINE | 3% |
| 3456 | Spotify | 8% |
| 4567 | Word | 2% |
| 5678 | Zoom | 15% |
สรุปบทนี้
- process = โปรแกรมที่กำลังรันในเครื่อง คล้ายพนักงานในร้านที่ทำงานพร้อมกันหลายคน
- แต่ละ process มี PID เป็นเลขประจำตัว
Ctrl + C= หยุดคำสั่งที่รันอยู่ใน Terminal ตอนนั้นps= ดูว่ามี process อะไรรันอยู่ + PIDkill <PID>= หยุด process ตาม PIDkill -9 <PID>= บังคับหยุดถ้า process ดื้อkillall <ชื่อ>= หยุด process ทุกตัวที่ชื่อเหมือนกัน
บทต่อไปจะเฉลยปริศนาที่หลายคนสงสัยมาตั้งแต่บทแรก “ทำไมพิมพ์ python แล้วเครื่องเจอ ทั้งที่ python ไม่ได้อยู่ในกล่องที่เรายืน?” เป็นกลไกที่ทำให้คำสั่งทุกคำเจอที่ของมันเอง