วันพุธที่ 22 กรกฎาคม พ.ศ. 2558

kill process by python script

โดยปกติ เวลาที่ผมใช้โปรแกรม python ผมจะเปิด terminal แล้วสั่ง sudo python AAA.py
แต่มีความต้องการว่าให้ user ที่ไม่ค่อยมีพื้นฐาน linux ใช้งานง่ายๆ ก็เลยต้องเขียนเวป แล้วให้ user กดปุ่มสั่งให้ python ทำงานอีกทีนึง

แต่ก็ติดปัญหาอีกว่าจะให้ user สั่งให้โปรแกรมหยุดทำงานได้ยังไง ก็นั่งหากันอยู่นาน ทดสอบไปมา ได้ผลดังนี้

ในโปรแกรมที่เราสั่งให้ทำงาน(AAA.py) ผมได้แทรก code ลงไป ให้สร้างไฟล์ขึ้นมาไฟล์นึง ในนั้นให้บันทึก PID เอาไว้ มี code ดังนี้

import os
pid = os.getpid()
f = open('PID.txt',"w")
f.write(str(pid))

จาก code ด้านบน เมื่อเราสั่งให้ AAA.py ทำงาน, จะได้ไฟล์ที่ชื่อว่า PID.txt ที่มีหมายเลข PID อยู่ข้างใน
PID คือ Process ID เป็นหมายเลขประจำโปรแกรมที่ทำงานอยู่


จากนั้นผมก็ได้สร้างไฟล์ใหม่อีกไฟล์นึง ที่มีชื่อว่า killAAA.py มี code ดังนี้

import os
import sys
import signal

f = open('PID.txt',"r")
pid = f.readline()
print pid
os.kill(int(pid), signal.SIGKILL)
sys.exit()

ถ้าเราสั่งให้ killAAA.py ทำงาน โปรแกรมนี้ก็จะไปสั่งให้ AAA.py หยุดทำงาน ได้ตามต้องการ

สรุป
บนหน้าเวป จะมีปุ่มที่สั่งให้หยุดการทำงานของโปรแกรมได้ เพื่อให้ user สามารถใช้งานได้ง่ายๆ ไม่ต้องเข้า terminal