Showing posts with label Linux Command. Show all posts
Showing posts with label Linux Command. Show all posts

Sunday, March 2

shell script check cpu raspberry pi ‘s temperature

vcgencmd measure_temp

หน้าร้อนใกล้เข้าแล้ว  เริ่มเป็นห่วงว่า Raspberry pi จะร้อนเกินไปหรือเปล่า ก็ลองใช้ shell script เช็คอุณหภูมิของ CPU ของ Raspberry pi สักหน่อย ว่า ตอนนี้อุณหภูมิ อยู่ที่เท่าไหร่แล้ว ใช้คำสั่งง่ายๆ ครับ vcgencmd measure_temp แค่ นี้ ก็จะได้คำตอบแล้ว ว่าอุณหภูมิเท่าไหร่  ถ้าจะให้วนลูปเรื่อยๆ ก็ได้ครับ

while true; do vcgencmd measure_temp; sleep 2; done

วนลูป แล้ว หยุด ทุกๆ 2 วินาที  ลองเอาไปประยุกต์กันดูครับ

อ่านเพิ่มเติม...

Thursday, February 28

How to getting started WiringPi

ในการควบคุม GPIO ของ Raspberry pi นอกจากเราจะทำการ echo ค่า 1 และ 0 ไปที่ Filesystem ที่ชื่อ sysfs ของระบบ linux ที่เป็นที่เก็บไฟล์ื่ที่ติดต่อกับ GPIO Hardware ของ Raspberry Pi แล้ว (http://raspberry-pi-th.blogspot.com/2012/09/get-to-know-raspberry-pi-gpio.html) ยังมีอีกหลายวิธี ไม่ว่าจะเป็นการเรียกใช้ module RPi.GPIO(http://raspberry-pi-th.blogspot.com/2012/10/rpigpio-python-control-gpo-of-raspberry.html) ที่พัฒนาด้วยภาษาไพธอน แต่ก็ยังไม่ค่อยตอบโจทย์ผมเท่าไหร่ เพราะต้องใช้สิทธิ์ root ในการเรียกใช้คำสั่งเหล่านั้น ซึ่งไม่ค่อยสะดวกเท่าไหร่

วันนี้ผมจะมาแนะนำอีกหนึ่งไลบรารี่ ของคุณ Gordon Henderson ซึ่งได้พัฒนาชุดโปรแกรมสำหรับเรียกใช้งาน GPIO ของ Raspberry pi ด้วยภาษา C ซึ่งเข้าถึงรีจิสเตอร์ของ GPU ของ Raspberry Pi เลย และที่สำคัญ เราสามารถเรียกใช้ไลบรารี่ชุดนี้ ได้เหมือนคำสั่ง shell ของ linux ได้เหมือนๆ คำสั่งอื่นๆ ทั่วไป โดยไม่จำเป็นต้องเป็นสิทธิ์ Root ก่อนเลย ซึ่งสะดวกเป็นอย่างยิ่งครับ ในการนำไปต่อยอดพัฒนาโปรแกรมอื่นๆ ต่อไป 

เรามาติดตั้งกันก่อนเลยครับ เนื่องจากโปรแกรมนี้ ถูกเก็บไว้ด้วยรูปแบบกระจายซอร์สโค๊ดด้วย git-core หากเรายังไม่มี package นี้ในการช่วยดาวน์โหลดซอร์สโค๊ดต่างๆ จากผู้พัฒนาโปรแกรมให้ติดตั้ง git-core ด้วยคำสั่ง

sudo apt-get install git-core

จากนั้นทำการดาวน์โหลด wiringPi ด้วยคำสั่ง

git clone git://git.drogon.net/wiringPi

จากนั้นเข้าไปในโฟวเดอร์ wirignpi แล้วทำการเช็คอัพเดท

cd wiringPi
git pull origin

ต่อไปให้ทำการติดตั้ง ซึ่งจะเป็นการ compile โค๊ดที่เราโหลดมาบนบอร์ดของ โดยออกจากโฟวเดอร์ wiringPi ก่อน โดยเรียกคำสั่ง

cd ..
จากนั้นทำการรันไฟล์ build ด้วยคำสั่ง

./build

Raspberry pi จะทำการ compile wiringPi เพื่อให้กลายเป็นคำสั่ง shell ให้เราเรียกใช้ง่ายๆ ต่อไป

เมื่อ compile เสร็จแล้ว เราจะสามารถเรียกใช้คำสั่ง gpio ได้  ให้เราจินตนาการง่ายๆ ว่า คำสั่ง gpio ก็เหมือนคำสั่ง ls หรือ คำสั่ง cat หรือ cp เหมือนคำสั่งอื่นๆ บน linux นั่นเอง ดังนั้น มันจึงสามารถที่จะเรียกดูํ manual ของมันได้เช่นกัน ด้วยคำสั่ง

man gpio

ในคู่มือที่แสดงนี้ จะบอกถึงวิธีการเรียกใช้คำสั่งนี้ และที่ท้ายๆ คู่มือ เค้าจะเขียนบอกการจับคู่ขา WiringPi กับ GPIO จริงๆ ทั้ง Rev1 และ Rev2 ครับ

man gpio

ผมขออธิบายการเรียกใช้งานคร่าวๆ ของคำสั่ง gpio นี้นะครับ ที่เหลือ สามารถศึกษาเพิ่มเติมได้ใน man gpio นี้แหละครับ

ในการเรียกใช้งาน GPIO ของ Raspberry pi โดยค่าเริ่มต้น เมื่อเราจ่ายไฟไปที่บอร์ด Raspberry pi เริ่มต้น ที่ GPIO ส่วนใหญ่ จะมี สถานะเป็น Input หากเราต้องการนำขา GPIO ไปใช้งานเป็น Output แล้ว เราจะต้องทำการกำหนดทิศทางของ GPIO ซะก่อน ด้วยคำสั่ง

gpio mode 0 out <--- สั่งให้ wirignpi pin 0 ทำหน้าที่เป็น output
gpio write 0 1  <--- สั่งให้เขียนค่า 1 ไปที่ wiringpi pin 0 ซึ่งจะเกิด login high ที่ pin นี้

ผมลองเปิด webiopi เพื่อเช็คสถานะของ GPIO ไปด้วย ( http://raspberry-pi-th.blogspot.com/2013/01/webiopi-control-raspberry-pi-s-gpio-via.html )

gpio mode 0 out

ในทำนองตรงกันข้าม หากเราต้องการให้ pin ใดๆ ทำหน้าที่เป็น input รอรับสถานะทางไฟฟ้า ก็กำหนดเป็น in แล้้วใช้คำว่า read แทนการ write ดังต่อไปนี้

gpio mode 11 in
gpio read 11 

หวังว่าคงไม่ งง นะครับ ว่าทำไม 11 กับ GPIO7 มันเกี่ยวข้องอะไรกัน ซึ่งมันเป็นเรื่องของการตั้งชื่อ map pin เข้ากับตัวโค๊ดของผู้เขียนโปรแกรมนั่นเอง ไม่มีอะไรมาก

gpio mod 11 in

นอกจากนี้ คำสั่ง gpio ยังมีลูกเล่นอื่นๆ อีกไม่ว่าจะเป็นการสร้างสัญญาณ PWM หรือการอ่านสถานะ pin ทั้งหมดก็สามารถทำได้เช่นกัน ลองศึกษาเพิ่มเติมดูจากคำสั่ง man gpio หรือที่เว็บ https://projects.drogon.net/raspberry-pi/wiringpi/

เดี๋ยวต่อไป ผมจะยกตัวอย่างการนำคำสั่ง gpio ไปลองใช้งานในด้านอื่นๆ ดูบ้างครับ ขอให้สนุกกับ Raspberry pi นะครับ

อ่านเพิ่มเติม...

Saturday, January 19

Putty tip#1

เวลาผมใช้ คำสั่ง pstree หรือ tree บน putty terminal จะเจอปัญหาว่าไม่สามารถแสดงเส้นทาง โครงสร้างของไดเรกทอรีได้ วันนี้ก็เลยเอารูปการแก้ปัญหามาฝากครับ ลองไปปรับแต่งกันดู

putty

pstree คือ คำสั่งแสดงโครงสร้างของ process ที่ำกำลังทำงานอยู่ ณ ขณะนั้น ว่ามี process หลัก และ process ย่อย ซ้อนกันอยู่อย่างไร

tree คือ คำสั่งแสดงโครงสร้างของไดเรกทอรี่ และ ไฟล์ที่ซ้อนกันอยู่

เล็กๆ น้อยๆ สำหรับวันนี้ครับ มีความสุข เสาร์ อาทิตย์ นะครับ

อ่านเพิ่มเติม...

Thursday, December 27

THE DEBIAN ADMINISTRATOR'S HANDBOOK

THE DEBIAN ADMINISTRATOR'S HANDBOOK

    อย่างที่เราทราบกันดีอยู่แล้วว่า เจ้าระบบปฏิบัติการ Raspbian นั้น แท้จริงแล้วก็คือ Debian ที่ถูกตัดแต่งพันธุกรรมให้เหมาะกับฮาร์ดแวร์บนบอร์ด Raspberry Pi นั่นเอง เพราะฉะนั้นแล้ว ความเข้าใจในระบบปฏิบัติการ Debian ย่อมนำไปสู่การปรับแต่งค่า และการใช้งานเจ้า Raspian ด้วยเช่นกัน

     ผมจะยกตัวอย่างให้ฟัง เดิมทีผมมักจะใช้ CentOS เมื่อเวลาที่จะต้องกำหนดค่าต่างๆ ให้กับ Apache นั้นเราต้องไปกำหนดที่ค่า httpd.conf ซึ่งอยู่ใน path  /etc/httpd/conf/httpd.conf แต่สำหรับเจ้า Debian แล้ว มันไม่ได้เก็บค่าไว้ตรงนั้น มันดันไปเก็บค่าไว้ที่ /etc/apache2/sites-enabled/000-default และบางค่า ก็ไปเก็บไว้ที่ /etc/apache2/apache2.conf นั่นหมายความว่า ไม่ใช่ว่าทุกๆ OS จะต้องปฏิบัติตามเหมือนกันหมด แต่ก็ใช่ว่าจะแตกต่างกันสิ้นเชิงเลยเสียทีเดียว

     ในส่วนของการปรับแต่งค่าที่เกี่ยวข้องกับระบบ network นั้น จริงๆ แล้ว เรากำลังทำหน้าที่เป็น administrator อยู่นั่นเอง วันนี้ ผมมีหนังสือแนะนำให้ไปอ่านกันนะครับ สำหรับใครที่กำลังเล่นอยู่กับ Raspberry Pi ที่ใช้ Raspian เป็น OS และกำลังเจอปัญหาอย่างที่ผมได้เกริ่นไว้ข้างต้น แนะนำให้มาอ่านเล่มนี้ครับ จะได้ไม่เจอปัญหาเหมือนผม ;P

THE DEBIAN ADMINISTRATOR'S HANDBOOK มีไฟล์ให้เราเลือกไปอ่านได้ 3 ประเภทไฟล์ครับ ต้องการรูปแบบไหน ก็เข้าไปเลือกดาวน์โหลดกันได้เลยครับ ..... คลิก

อ่านเพิ่มเติม...

Monday, December 24

How to find Raspbberry Pi’s IP Address when yon don’t know it.

      โดยปกติแล้ว หลังจากที่เราได้บอร์ด Raspbbery Pi มาแล้ว เมื่อทำการติดตั้ง Raspian ลงบน SD-Card เรียบร้อยแล้ว ในเวอร์ชั่นหลังๆ ของ Raspian
เค้าจะเปิด SSH ไว้ให้เรียบร้อยแล้ว หน้าที่ของเราก็คือ หาช่อง PORT Network จาก Router ของเราเสียบเข้าไปที่ Port Network ที่บอร์ด Raspberry Pi เมื่อจ่ายไฟเข้าบอร์ดเรียบร้อยแล้ว หากไม่มีอะไรผิดพลาด เจ้าบอร์ด Raspberry Pi ก็อยู่ในวง LAN เดียวกันกับเครื่องคอมพิวเตอร์ ของเราแล้ว (ด้วยการจ่าย IP Address จาก Router) หน้าที่ของเราก็คือ ทำการ Login แล้วทำการติดตั้ง Package อืนๆ ที่ต้องการ

     ปัญหาจะเกิดขึ้นตอนนี้ ก็คือ อย่างที่เรารู้อยู่แล้วว่าช่อง Display Output ของ Raspberry Pi มีให้เลือก คือ AV out (default) และ ช่อง HDMI (ซึ่งต้องเข้าไปเซตค่าก่อนใช้งาน) แล้วถ้าเราไม่สามารถหา TV หรือ Monitor ที่มีช่อง AV IN มาต่อกับบอร์ด Raspberry Pi หล่ะ เราจะเริ่มต้นใช้งานบอร์ดได้อย่างไร ?

     ด้วยความรู้ เรื่อง Network และ Linux ที่มีอยู่นิดหน่อย เราน่าจะใช้โปรแกรม nmap ในการทำการ scan หา Port 22 ซึ่งเป็น  Port สำหรับ SSH ที่ Raspberry Pi ถูกเปิดใช้งาน และเมื่อ Raspberry Pi ถูกต่ออยู่ในวง LAN เดียวกันเครื่องคอมพิวเตอร์ของเราแล้ว ก็น่าจะไม่ใช่เรื่องยาก ที่จะหา IP Address ของ Raspberry Pi เพื่อที่เราจะได้ทำการ SSH เพื่อเข้าใช้งาน Raspbbery Pi ต่อไป

เอาหล่ะ เราก็โหลดโปรแกรม nmap มาใช้กันเลย ซึ่งสามารถเข้าไปโหลดเวอร์ชั่นสำหรับ windows ได้จากเว็บ http://nmap.org/download.html#windows แต่ วันนี้ ผมไม่ได้มาแนะนำสำหรับเวอร์ชั่น windows ครับ ผมจะแนะนำเวอร์ชั่นของ Debian ;P

ก่อนหน้านี้ ผมได้แนะนำให้เพื่อนลองติดตั้ง VirtualBox เพื่อจำลองพื้นที่บน Windows ให้สามารถติดตั้ง Debian ได้ ฉะนั้น เราก็มาลองกันเลย ว่าเราจะเอา Debian บน VirtualBox มาใช้งานได้อย่างไร

เปิด VirtualBox ขึ้นมาครับ แต่ก่อนที่เราจะเริ่ม Start Debian ให้เราทำการตั้งค่า Network ให้เป็น Bridged Adapter กันก่อน เพื่อให้เจ้า Debian ของเราต่อออกอินเตอร์เนต เพราะเราต้องไปโหลด package nmap มาก่อน  เมื่อตั้งค่าเรียบร้อยให้ทำการ Start Debian ขึ้นมาเลยครับ

Debian on VirtualBox

Login เข้าสู่ XWindows ตามปกติ เมื่อเรียบร้อยแล้ว ให้เปิด Terminal ขึ้นมาสักตัว จากเมนู  จากนั้นเปลี่ยนตัวเองเป็น root ซะ แล้วทำการโหลด nmap package ด้วยคำสั่ง  apt-get install nmap


เรียกใช้คำสั่ง nmap เพื่อให้ทำการแสดงหาเครื่องในเครือข่าย ที่เปิด port 22 พร้อมทั้งให้แสดง OS ที่ติดตั้งอยู่ด้วย โดยผมให้เริ่มทำการ scan ตั้งแต่ ip address 192.168.2.100 ถึง 192.168.2.255  (เพราะผมทราบอยู่ก่อนหน้าแล้วว่า router ผมเริ่มจ่าย IP อยู่ใน  range นี้) ด้วยคำสั่ง   nmap –sV –p 22 192.168.2.100-255
รอสักครู่ จะปรากฏข้อความรายงานผล 

nmap result

ในที่นี้ ผมได้รับรายงาน มา  2 IP Address ที่เปิด Port 22 อยู่ในขณะนี้ แต่เนื่องจากเจ้า Debian virtual ของผมเป็นหมายเลขไอพี 192.168.2.109 อยู่แล้ว แสดงว่า เป้าหมายบอร์ด Raspberry Pi ที่เรากำลังหาอยู่นั้น เป็นหมายเลขไอพี 192.168.2.105 อย่างแน่นอน เราลอง เปิด putty ขึ้นมา เพื่อทำการเชื่อมต่อกับ SSH ที่ ไอพี 192.168.2.105  ผลปรากฏว่า ใช่เลย เราสามารถ login เข้าสู่ SSH ด้วย user pi แสดงว่า เราทำถูกแหละ

     นั่นก็เป็นแนวทางการใช้ nmap และการนำ Debian virtual มาช่วยในการทำงานของเรากับงาน Linux Embedded พวกนี้  น่าจะได้แนวทางไปประยุกต์ต่อไปนะครับ  ขอเสริมนิดหนึ่ง สำหรับโปรแกรม nmap เป็นโปรแกรมที่มีประโยชน์มาก สำหรับใครสนใจสามารถศึกษาได้เพิ่มเติม ผมรับรองว่ามีประโยชน์มาก โดยเฉพาะ linux network admin ครับ จำเป็นต้องใช้ และใช้บ่อยมาก 

    สุดท้าย ผมขอนำฉากๆ หนึ่งในหนังเรื่อง The matrix ครับ ในฉากนี้ ทรินิตี้ กำลังใช้คำสั่ง nmap ในการหา port ที่เปิดอยู่ แล้ว ทำการ hack เข้าไป เพื่อสั่งปิดแหล่งจ่ายไฟฟ้าทั้งหมดของโลก matrix หนังเรื่องนี้ สาระเยอะจริงๆ ถ้าตามเก็บรายละเอียดทั้งหมด จะพบว่า เราได้อะไรมากกว่า ฉากบู๊ที่ตื่นเต้น อีก

trinity uses nmap, shouldn't you?

อ่านเพิ่มเติม...

Friday, December 21

How to make crond service in linux

      ไม่ได้เข้ามาเขียนนานเหมือน ติดภาระกิจหลายอย่าง แต่ ก็ยังติดตามข่าวความก้าวหน้า และพัฒนาการของเจ้าบอร์ด Raspberry Pi อยู่เหมือนกัน ก่อนหน้านี้ ผมก็วุ่นวายอยู่กับการอัพเกรด Server ในแผนก เนื่องจาก CentOS ที่ใช้อยู่เก่าเกินกว่า จะอัพเกรด PHP จากเวอร์ชั่น 4 ไปเป็นเวอร์ชั่น 5 ก็เลยวุ่นวายพอสมควรที่ต้องโยกย้าย ถ่ายเทข้อมูลออก แล้วทำการติดตั้ง CentOS ใหม่ แล้วก็ลง PHP, MySQL ใหม่ด้วย ก็ดันมีปัญหากับข้อมูลอีก เวลาข้ามเวอร์ชั่นนี่ ต้องเช็คให้ดี ว่ามัน support กันใหม่ ทางทีดี ก็น่าจะลองบน VirtualBox ก่อนก็ได้นะครับ เผื่อความชัวร์

      โม้ซะเยอะ แลบลิ้น  มาเข้าเรื่องของเราดีกว่า วันนี้ก็ไม่มีอะไรมากครับ (ก็เลยโม้หน่อย)  แค่มาแนะนำเครื่องมือตัวหนึ่ง บน Linux ที่หลายๆ คนรู้จักดี บางทีเรามีความจำเป็นที่จะต้องให้ระบบของเรามีการทำงานอะไรบางอย่าง ที่ต้องทำสม่ำเสมอ และทำเป็นประจำเป็นเวลา ซึ่งอาจะเป็นประจำทุกชั่วโมง ทุกวัน ทุกวันอังคาร ทุกวันเสาร์สี่ทุ่ม อะไรประมาณนี้ ซึ่งเจ้าเครื่องมือ หรือบริการบน Linux ที่ผมจะแนะนำนี้ สามารถจัดการงานที่ต้องการ ที่ผมได้กล่าวไว้แล้วข้างต้นได้เป็นอย่างดี โปรแกรม หรือบริการที่ว่านี้ นี่ก็คือ Crontab

      ถ้าจะเปรียบเทียบง่ายๆ ก็คือ crontab ก็เหมือน scheduler หรือตัวจัดการงานตามเวลาที่เราได้ตั้งไว้นั่นเอง ซึ่งในระบบปฏิบัติการ Windows ก็มี ไม่รู้มีใครเคยใช้หรือเปล่า แต่ใน Linux แล้ว มันไม่ได้มีหน้าต่างให้ตั้งค่าอะไรสะดวกเหมือน windows ฉะนั้นเรามาศึกษาการตั้งค่าเจ้า crontab กันสักหน่อยครับ

แต่ละ user สามารถที่จะมี crontab หรือบางทีก็เรียก crond service ของแต่ละคน แยกจากกันได้ นั่นแปลว่า ถ้ามี user pi และ user root ก็สามารถที่จะตั้ง crontab แต่ละคนได้ ไม่ต้องใช้ crontab ร่วมกัน  โดยสามารถที่จะสร้าง หรือ ดู crontab ได้ด้วยคำสั่ง

crontab -e เพื่อสร้าง crontab ใหม่ หรือเข้าไปแก้ไข crontab ที่เราได้ตั้งไว้แล้ว
crontab -l เพื่อขอดูรายการ crontab ที่ตั้งไว้ (ดูเฉยๆ ไม่ได้ต้องการแก้ไข)

พอเราได้ลองใช้ คำสั่ง crontab -e แล้ว linux ก็จะทำการเลือก editor ตัวหนึ่งขึ้นมาให้เราทำการแก้ไข หน้าตา crontab เริ่มต้นจะประมาณนี้ (อาจจะแตกต่างกันไปบ้าง ตามแต่ linux แต่ละค่าย)

# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command

อันนี้เป็นข้อความ crontab ของ Raspian ใน Raspberry Pi ครับ

ต่อมาที่เราต้องทำความเข้าใจก็คือ ในการตั้งค่าให้ crontab ถูกกระตุ้นทำงาน ตามวัน เวลา นาที ชั่้วโมง ใดๆ ก็ได้ ดังต่อไปนี้

*     *     *     *     *  Command to be executed
-     -     -     -     -
|     |     |     |     |
|     |     |     |     +----- Day of week (0-7)
|     |     |     +------- Month (1 - 12)
|     |     +--------- Day of month (1 - 31)
|     +----------- Hour (0 - 23)
+------------- Min (0 - 59)

เราใช้การเว้น 1 ช่องว่าง เป็นการแยกแต่ละค่า และในทีนี้เครื่องหมาย * (ดอกจัน) หมายความว่า "ทุกๆ"  เช่น ผมตั้งว่า

5 * * * * Command to be executed
ความหมายก็คือ ผมให้ คำสั่งที่ถูกระบุในบรรทัดนี้ ถูกเรียกให้มาทำงาน ในนาที ที่ 5  ทุกๆชั่วโมง ทุกๆวันของเดือน ทุกๆสัปดาห์ ทุกๆวันของสัปดาห์

แล้วถ้าเป็นแบบนี้หล่ะ
* 1,2,3,4 * * * Command to be executed
ความหมายก็คือ ผมให้ คำสั่งที่ถูกระบุในบรรทัดนี้ ถูกเรียกให้มาทำงาน ใน ทุกๆนาที  ชั่วโมงที่ 1,2,3,4 ทุกๆวันของเดือน ทุกๆสัปดาห์ ทุกๆวันของสัปดาห์  ซึ่งในชั่วโมงที่ 1,2,3,4 นั่นคือ ตีหนึ่ง ถึง ตีสี่ นั่นเอง

     เอาหล่ะ ที่นี้ เรามาลองสร้าง crontab กันดูนะครับ สำหรับ user pi หลังจาก login แล้ว ให้เรียกคำสั่ง crontab -e จากนั้น เพิ่มบรรทัด ล่างสุด โดยไม่มีเครื่องหมาย # นำหน้านะครับ เพราะมันเป็นการ comment ในโปรแกรม

ผมเพิ่ม คำสั่งนี้ลงไป ใน crond service ของ pi

* * * * * /bin/date >> /home/pi/date.txt

crontab -e

ผมลองให้ shell เรียกคำสั่ง date ซึ่งถ้าเราลองเรียกคำสั่งนี้ ที่ console มันจะแสดงวัน เวลา ออกมาทางหน้าจอ

image

แต่เมื่อเรามาเขียนสั่งใน crontab มันไม่รู้ว่าจะไปแสดงหน้าจอไหน ผมก็เลย สั่งเปลี่ยนทิศทางการแสดงผล ให้ไปออกที่ text file ที่อยู่ใน /home/pi ชื่อ date.txt โดยให้เขียนต่อกันไปเรื่อยๆ ในไฟล์ date.txt สังเกต ผมใช้ >> แสดงว่าเป็นการเขียนต่อจากข้อความเก่า 

/bin/date >> /home/pi/date.txt

จากนั้นทำการบันทึก crond service ด้วยการออกจากโปรแกรม editor ซึ่งในที่นี้ เจ้า raspian ของเรามันใช้โปรแกรม nano ในการเป็น editor ซึ่งวิธีการออกจากโปรแกรมก็แค่ กด Ctrl+x แล้วกด y เพื่อยืนยันการเปลี่ยนแปลงสิ่งที่เราแก้ไข จากนั้น ไม่ต้องทำอะไรครับ รอดูผลที่เปลี่ยนแปลงใน /home/pi จะปรากฏไฟล์ date.txt เกิดขึ้น หลังจากเราได้บันทึกไปแล้ว ลองให้แสดงรายละเอียดข้างในไฟล์ด้วยคำสั่ง
cat /home/pi/date.txt ดูครับ จะเห็นว่า มีการเขียน วันเวลา ลงในไฟล์นี้

ถ้าเราอยากจะคอยตรวจดูว่า crond service เราได้ทำงานหรือเปล่า สามารถเช็คได้ด้วยคำสั่ง

tail -f /var/log/syslog ได้ครับ

raspberry pi crontab

      เราสามารถที่จะเขียนสคริปต์ด้วยภาษาใดก็ได้ ที่สามารถรัน ทำงานบน linux นี้ แล้วนำไปฝากไว้ที่ crond service ได้มากกว่า 1 คำสั่งได้ โดย 1 บรรทัด สามารถทำได้ 1 คำสั่ง หากต้องการเรียกหลายๆ คำสั่ง ก็เพิ่มจำนวนบรรทัด และเงื่อนไขเวลาการทำงานเข้าไปครับ

      คำถามก็คือ เราใช้ crontab ตอนไหน คำตอบก็คือ งานใดๆ ก็ตาม ที่ต้องทำเป็นประจำ เช่น backup ฐานข้อมูล, ลบไฟล์ที่ไม่จำเป็น, หรือแม้แต่สั่งเปิดปิด GPIO ตามเวลา ที่เรารู้อยู่แล้ว และต้องการให้เกิดเป็นประจำ เราก็ควรที่จะเอางานนั้นๆ เขียนลงไปในสคริปต์ แล้วมาฝากไว้ที่ crond service ครับ เพราะนอกจากเราไม่จำเป็นต้องเขียนโค๊ดให้วนรอบค้างไปเรื่อยๆ แล้วให้ทำงานตามที่เรากำหนดแล้ว ยังมั่นใจได้ว่า หากระบบเราถูกรีเซตแล้ว crond service จะกลับมาทำงานได้เหมือนเดิม และคำสั่งที่ถูกเขียนลงไป นั้น จะถูกเรียกทำงานได้ตามปกติอีกด้วย

      ในตอนต่อไป ผมจะให้เจ้า crontab ทำการเรียก script python เพื่อดูค่า ip router ที่เป็นระดับ WAN เพื่อที่เราจะได้ทราบว่า ip router ของเราหมายเลขอะไร เพื่อจะได้ทำการรีโมทจากภายนอกบ้าน เข้ามาจัดการบอร์ด Raspberry pi ของเรานะครับ คอยติดตามชมหล่ะกัน ว่าผมจะทำยังงัย ^_^ 

อ่านเพิ่มเติม...
 

แจกฟรี พื้นที่ฝากไฟล์ 15 GB

ติดตามข่าวสารผ่าน Twitter

ติดตาม Blog นี้

Blog อื่นๆของฉัน

Microcontroller Electronics update

สถิติเยี่ยมชมบล๊อก