บทที่ 6 · อ่าน 6 นาที
คุมโปรแกรมที่รันอยู่
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 ที่อัปเดตแบบ real-time (เหมือน Activity Monitor บน Mac หรือ Task Manager บน Windows)
kill หยุด process ที่ค้าง
เจอ process ค้าง หรือกินทรัพยากรเครื่องเยอะ อยากปิด ใช้ kill ตาม ด้วย PID
kill 1234เลข 1234 คือ PID ของ process ที่อยากปิด เครื่องจะส่งสัญญาณให้ process นั้น หยุดเองแบบเรียบร้อย ปิดไฟล์ที่ค้างอยู่ก่อน แล้วค่อยจบ
ถ้า process ดื้อไม่ยอมหยุด ใช้ kill -9 แทน เป็นการบังคับหยุดทันที ไม่ถามไม่รอ
kill -9 1234สรุปบทนี้
- process = โปรแกรมที่กำลังรันในเครื่อง คล้ายพนักงานในร้านที่ทำงานพร้อมกันหลายคน
- แต่ละ process มี PID เป็นเลขประจำตัว
Ctrl + Cหยุดคำสั่งที่รันอยู่ใน Terminal ตอนนั้นpsดูว่ามี process อะไรรันอยู่ + PIDkill <PID>หยุด process ตาม PIDkill -9 <PID>บังคับหยุดถ้า process ดื้อkillall <ชื่อ>หยุด process ทุกตัวที่ชื่อตรงกัน
บทต่อไปจะเฉลยปริศนาที่หลายคนสงสัยมาตั้งแต่บทแรก "ทำไมพิมพ์ python แล้วเครื่องเจอ ทั้งที่ python ไม่ได้อยู่ในกล่องที่ เปิดอยู่" เป็นกลไกที่ทำให้คำสั่งทุกคำเจอที่ของมันเอง