หลังจากบทความก่อนๆ เราได้เรียนรู้และทดลองเขียน script ให้กับ raspberry Pi ตัวโปรดของเราทดลองรันกันมาหลายโปรแกรมแล้วนะครับ วันนี้เรามาดูวิธีการดูแลและจัดการ python script ที่เราได้สร้างขึ้นมา เพื่อให้มีการทำงานอัตโนมัติ ซึ่งจะมีประโยชน์หลายอย่าง เช่น เราสามารถเซตให้ python script ของเรารันอัตโนมัติ ตั้งแต่เราบูตเครื่อง และหากเรารัน python script ของเราไปนานๆ เกิด error และปิดตัวเอง เราก็อาจจะเซตให้ Supervisor ช่วย restart python script ของเราให้ทำงานใหม่ได้ เป็นต้นครับ ซึ่งการใช้งานและ config ก็ไม่ได้ยุ่งยาก พร้อมแล้วเรามาเริ่มกันดีกว่า
Supervisor คืออะไร?
มาทำความรู้จักกับ Supervisor กันก่อนครับ ซึ่งมันก็คือ Process Control System เช่นเดียวกันกับโปรแกรมหลายๆตัว เช่น launchd, daemontools, and runit (ซึ่งที่กล่าวๆ มาผมก็ไม่เคยลองเล่นนะ 55+) ประโยชน์ของ Supervisor ก็คือ ช่วยจัดการและดูแลการทำงาน Process ของเราบนระบบปฏิบัติการ Linux ซึ่งในที่นี้เราเอามาประยุกต์ใช้กับ Raspberry Pi ของเรา เพื่อให้มันมันดูแลจัดการกับ Python Script ของเรา เพื่อให้แน่ใจว่า Script ของเราสามารถทำงานได้ตลอดเวลา ตั้งแต่เปิดเครื่อง หรือแม้แต่กระทั้งหาก Script ของเรามีการทำงานผิดพลาดและปิดตัวลง Supervisor ก็ยังจะช่วย Restart Python Script ของเราให้กลับมาทำงานใหม่ด้วยครับ เจ๋งมั๊ยละ !!!
การติดตั้ง Supervisor
การติดตั้งก็ไม่ยุ่งยากอะไรครับ ใช้คำสั่งต่อไปนี้ได้เลย
sudo apt-get install supervisor
เสร็จเรียบร้อยแล้วครับ อ้าวว !! ทำไม มันง่ายขนาดนั้น ก็มันง่ายจริงๆ ครับ ต่อไปเรามาดูวิธีการ config
การปรับแต่ง Supervisor
การสร้างไฟล์ config ให้เราทำการสร้างไฟล์ .conf ไปไว้ที่ /etc/supervisor/conf.d/ โดยใช้คำสั่งต่อไปนี้
sudo nano /etc/supervisor/conf.d/test_supv.conf
หลังจากนั้น เราก็ใส่ค่า config เข้าไปครับ ตัวอย่างที่ผมทำดังต่อไปนี้
[program:wx] command=python /home/pi/python/wx/wx.py stdout_logfile=/home/pi/python/wx/wx_log.txt redirect_stderr=true autorestart=true autostart=true
มาลองดู script ที่เราสร้างผ่านหน้าต่าง command กันครับ
อธิบายดังต่อไปนี้ครับ
[program:wx] คือ ชื่อ config ที่เราตั้งขึ้น
command คือ คำสั่งที่รัน process ในที่นี้เราสั่งให้รันไฟล์ python ของเรา
stdout_logfile คือ การ print พวกค่า output หรือ ค่า error ต่างๆ ไปเก็บไว้ใน logfile ที่กำหนด
autorestart คือ การตั้งค่าให้มีการ restart หาก python script ของเราหยุดทำงาน
autostart คือ สั่งให้ python script ของเราทำงานตั้งแต่เริ่มต้นเปิดเครื่อง
เสร็จแล้ว หลังจากนั้นก็ลอง restart Raspberry pi เราสักรอบนึง ทีนี้ก็มั้นใจได้ว่า python script ของเราจะรันอยู่ตลอดเวลา ไม่หายไปแน่นอนครับ ^^
คร่าวๆ ก็เป็นดังที่กล่าวมาครับ สำหรับ command เพิ่มเติมสามารถเข้าไปดูได้ตาม link ต่อไปนี้
http://supervisord.org/configuration.html#program-x-section-settings
แล้วพบกับบทความสนุกๆ ใหม่ในตอนหน้าครับ สวัสดีครับ …