Automatically run a program on Linux startup - mrolarik/simple-iot GitHub Wiki

การสั่งให้โปรแกรมทำงานอัตโนมัติหลังจากเปิด Linux ขึ้นมาเพื่อทำงาน สามารถทำได้โดย

  • เปิด Terminal ที่เครื่อง Server (ในกรณีนี้คือเครื่อง Raspberry Pi) และพิมพ์คำสั่ง
$ sudo nano /etc/rc.local

จากนั้นระบบจะให้กรอกรหัสผ่านเพื่อเข้าโปรแกรม nano เพื่อแก้ไขไฟล์ข้อมูล

[sudo] password for cocobot:
  • เมื่อกรอกรหัสผ่านสำเร็จจะสามารถแก้ไขไฟล์ rc.local

ตัวอย่างไฟล์ rc.local

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exit 0
  • จากนั้นให้พิมพ์คำสั่งที่ต้องการลงไปก่อนคำสั่ง exit 0 เช่น
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

service ssh start
python /home/cocobot/Desktop/ws/rpi-pir-line-notify.py

exit 0

จากตัวอย่างได้เพิ่ม 2 คำสั่ง ประกอบด้วย

service ssh start
python /home/cocobot/Desktop/ws/rpi-pir-line-notify.py
  • คำสั่ง service ssh start สั่งให้เปิดการทำงาน ssh เนื่องจากบางครั้งเมื่อเปิดเครื่อง Raspberry Pi (RPi) ที่ติดตั้ง Ubuntu Mate โปรแกรม ssh จะไม่ทำงานอัตโนมัติทำให้ไม่สามารถ Login เข้าไปยังเครื่อง RPi ได้ ดังนั้น จึงต้องเปิดเซอร์วิส (Service) ssh เสียก่อน
  • คำสั่ง python /home/cocobot/Desktop/ws/rpi-pir-line-notify.py คือการสั่งให้โปรแกรม rpi-pir-line-notify.py ทำงาน

ทดสอบการทำงาน

  • ให้ Restart ระบบ Ubuntu Mate ของเครื่อง RPi
  • จากนั้นรอจนระบบ Ubuntu Mate กลับมาทำงานอีกครั้ง ให้สังเกตที่เครื่อง RPi อุปกรณ์ PIR Sentor ที่ต่อเข้ากับ RPi จะทำงานโดยอัตโนมัติจากคำสั่ง python /home/cocobot/Desktop/ws/rpi-pir-line-notify.py
  • ขั้นตอนต่อไปให้ทดสอบการ ssh เข้าสู่ RPi โดยเปิด Terminal จากเครื่องคอมพิวเตอร์อื่น ๆ และ ssh เข้าไปยังเครื่อง RPi ซึ่งจะทำให้สามารถ ssh เข้าสู่ระบบได้ และจะไม่ขึ้นข้อผิดพลาด ดังตัวอย่างต่อไปนี้
ssh: connect to host x.x.x.x port 22: connection refused

(อ่านรายละเอียดการใช้ ssh เพิ่มเติม การควบคุม Raspberry Pi ผ่าน ssh)

รายละเอียดเพิ่มเติม