เมื่อพัฒนาโปรแกรมบนบอร์ดคอมพิวเตอร์ไปนถึงจุดที่ใช้งานได้จริง หนึ่งปัญหาที่นักพัฒนามักจะเจอคือ จะทำยังไงให้โปรแกรมเปิดขึ้นมาอัตโนมัติทุกครั้งที่บูต OS ขึ้นมา เพื่อให้ระบบที่เราออกแบบไว้ทำงานได้ทุกครั้งที่ไฟมา ด้วยเหตุนี้จึงเกิดบทความสั้นนี้ขึ้นมา เน้นเสนอวิธีการทำให้โปรแกรมรันขึ้นมาได้อัตโนมัติ รวมถึงเปิดโปรแกรมขึ้นมาใหม่ทุกครั้งที่โปรแกรมตายอันเกิดจากความผิดพลาดใด ๆ ก็ตาม
rc.local เป็นไฟล์ ๆ หนึ่ง ที่ถูกเรียกใช้อัตโนมัติเมื่อบูต OS เสร็จ ดังนั้นเราจึงสามารแก้ไฟล์นี้ได้ โดยเพิ่มคำสั่งรันโปรแกรมของเราเข้าไป โดยไฟล์จะอยู่ที่ /etc/rc.local
ในหน้าต่างโปรแกรม PuTTY ให้พิมพ์ sudo nano /etc/rc.local โปรแกรม nano จะเปิดขึ้นมา พร้อมแสดงสิ่งที่อยู่ในไฟล์ ให้เลื่อนมาบรรทัดก่อน exit 0 ตรงช่วงก่อน exit 0 นี้สามารถเพิ่มคำสั่งที่ต้องการให้ทำหลังบูต OS เสร็จได้ ตัวอย่างต้องการให้รันไฟล์ blink.py อัตโนมัติเมื่อบูตเสร็จ โดยไฟล์อยู่ที่ /home/pi/blink ก็เพิ่มคำสั่ง python /home/pi/blink/blink.py& เข้าไป
* การเพิ่มคำสั่งลงในไฟล์นี้ ต้องเติม & ต่อท้าย เพื่อบอกว่าให้ทำคำสั่งต่อไปเลย โดยไม่ต้องรอคำสั่งนี้เสร็จสิ้น
กด Ctrl + x พิมพ์ Y กด Enter เพื่อบันทึกไฟล์ เพียงเท่านี้ทุกครั้งที่บูคระบบใหม่ ไฟล์โปรแกรม blink.py ก็จะถูกรันอัตโนมัติแล้ว
crontab เป็นโปรแกรม ๆ หนึ่ง ที่มีหน้าที่เรียกคำสั่งใด ๆ ที่ผู้ใช้กำหนดไว้ให้ทำงานตามเวลา เช่น ทำงานทุก ๆ 1 วัน ทำงานทุก ๆ 1 ชั่วโมงเป็นต้น ตัว crontab เองรองรับเหตุการณ์ reboot คือเหตุการที่บูต OS ขึ้นครั้งแรกด้วย
การใช้งาน ให้พิมพ์คำสั่ง crontab -e กรณีเปิดครั้งแรกจะให้เลือกโปรแกรม Text Editor แนะนำให้เลือก nano
ให้เลื่อนมาบรรทัดล่างสุด เคาะปุ่ม Enter เพื่อเว้น 1 บรรทัด ให้พิมพ์ @reboot แล้วตามด้วยคำสั่งที่ต้องการให้รัน ตัวอย่างต้องการให้ไฟล์ blink.py รัน สามารถพิมพ์ได้เป็น @reboot python /home/pi/blink/blink.py&
กด Ctrl + x พิมพ์ Y กด Enter เพื่อบันทึกไฟล์
คงไม่ดีแน่ถ้าระบบที่ทำขึ้นมาใช้งานได้แปบเดียวก็ใช้ไม่ได้อีก ต้องมานั่งรีบูตเพื่อให้โปรแกรมกลับมาทำงานได้ใหม่
ในการใช้งานจริงโปรแกรมที่เขียนไว้อาจถูกปิดลงได้ อันเนื่องมาจากเกิด Error ที่ตัวโปรแกรม เมื่อตัวโปรแกรมเกิด Error แล้ว สิ่งที่ตามมาคือโปรแกรมจะไม่ทำงานต่อ และปิดตัวเองไป ทำให้ระบบที่ออกแบบไว้ ล่ม ทางแก้แบบปลายเหตุคือการสั่งให้เปิดขึ้นมาใหม่เรื่อย ๆ หากโปรแกรมถูกปิดไป
หลักการคือ การสร้างไฟล์โปรแกรม ๆ หนึ่งที่จะทำหน้าที่วนลูปเปิดโปรแกรมของเราใหม่ทุกครั้งที่โปรแกรมนั่นตายไป แล้วเวลาไปแก้ในไฟล์ rc.local หรือใน crontab ก็ให้มาเรียกที่ไฟล์นี้แทน
สร้างไฟล์ใหม่ขึ้นมา ตัวอย่างตั้งชื่อ start.sh โดยอยากให้อยู่ในโฟลเดอร์เดียวกับโฟลเดอร์โปเจค จึงสร้างไว้ใน /home/pi/blink พิมพ์คำสั่ง nano /home/pi/blink/start.sh เพื่อแก้ไขไฟล์
พิมพ์โค้ดตามรูป โดยเปลี่ยน python /home/pi/blink/blink.py ให้เป็นคำสั่งรันโปรแกรมของตนเอง กด Ctrl + x พิมพ์ Y กด Enter เพื่อบันทึกไฟล์
แก้สิทธิ์ของไฟล์ให้ทุก user สามารถรันได้ โดยพิมพ์
ทดสอบรัน โดยพิมพ์ ./start.sh& หากไม่มีอะไรผิดพลาด จะไม่ขึ้นแจ้งอะไร โปรแกรมที่เราเขียนไว้จะถูกรันขึ้นมา ส่วนใน rc.local หรือใน crontab ก็สั่งให้มารันไฟล์นี้ได้เลย
เท่านี้โปรแกรมที่เราเขียนขึ้นมาก็จะถูกเรียกขึ้นมาอัตโนมัติทุกครั้งที่บูตแล้ว และต่อให้ตายไปก็สามารถฟื้นกลับมาได้อัตโนมัติ สำหรับบทความนี้ก็เป็นหนึ่งในบทความสั้น ๆ บทความหน้าจะมาเล่าถึงเรื่องอะไรก็ต้องฝากติดตามกันด้วยนะครับ และสำคัญคือ ลองเข้าไปเลือกซื้อสินค้าที่ร้านเอามาจำหน่ายได้นะครับ เพื่อให้คนเขียนมีเงิน มีแรง เขียนบทความมาลงต่อ ๆ ไปครับ สำหรับบทความนี้ มีเท่านี้
~ สวัสดีครับ ~