สวัสดีตัวผมเองและชาวโลกฮะ

EP ก่อนหน้า เราก็ได้สร้างโปรแกรมง่ายๆ (มั้ย) ไปแล้วเนอะฮะ ครั้งนี้จึงเป็นเรื่องตั้งเวลาให้โปรแกรมเรารันตามที่กำหนด ซึ่งจริงๆมันมีหลายโปรแกรมมากกกกกกก แต่ผมจะเสนอตัวโปรแกรมติดเครื่องคอมพิวเตอร์เราอยู่แล้ว ไม่ต้องไปหามาลงเพิ่มแต่อย่างใด นั่นคือ

  • Task Scheduler ของ Windows OS และ
  • Crontab ของ Unix based เช่น OSX และ Linux

แต่ก่อนอื่น เราต้อง export ตัวโปรแกรมของเราออกมาให้สามารถรันข้างนอก Talend ก่อนนะฮะ

Export โปรแกรมยังไงล่ะ

เริ่มต้นจากเราบันทึกโปรแกรมของเราที่ทดสอบเรียบร้อยแล้วนะฮะ จากนั้น คลิกขวาที่ job จาก Repository เลือก Build job

จากนั้น ให้เราเลือกที่อยู่ของโปรแกรมที่เราต้องการ มันจะอยู่ในรูปของ zip file นะฮะ สามารถสั่งให้ unzip หลังจาก export เสร็จแล้ว โดยติ๊ก “Extract zip file” แล้วก็อย่าลืมกด “Override parameter’s values > Values from selected context” ถ้าเราได้กำหนด context ไว้ก่อนหน้านี้นะฮะ

เมื่อเรากด Finish แล้ว Talend ก็จะใช้เวลาสร้างโปรแกรมสักแปบนึงนะฮะ จากนั้นพอเราไปดูที่ปลายทาง เราจะเห็นแฟ้มโปรแกรมที่เราเพิ่ง Export นะฮะ จะเห็นได้ว่า มันมีไฟล์ .bat กับ .sh อยู่ข้างในแฟ้มอีกทีนึง ตามรูปฮะ ซึ่ง .bat เนี่ยเอาไว้รันบน Windows ส่วน .sh สำหรับ Unix ฮะ

ถ้าเราแกะไฟล์ .bat หรือ .sh มาดูนั้น เราจะเจอ context ที่เรากำหนดตอน export อยู่ในรูปของ --context_param fpath="..." ซึ่งตรงนี้เราสามารถแก้ไขได้ตอนที่เราสั่งโปรแกรมรันตามเวลาได้ฮะ

ทีนี้ เราก็มีตัวโปรแกรมหลักแล้วเนอะ จากนี้ เรามาเริ่มกำหนดให้มันรันตามเวลาที่เราต้องการดีกว่าฮะ

Task Scheduler (Windows OS)

เริ่มต้นจากการเปิดโปรแกรมผ่าน Start ฮะ

หน้าตาโปรแกรมเริ่มต้นฮะ

หลังจากนั้น เราสามารถดูรายการที่ตั้งเวลาไว้อยู่แล้วได้ จาก Task Scheduler Library ด้านซ้ายนะฮะ เราสามารถเพิ่มรายการตั้งเวลาใหม่โดยกดปุ่ม Create Task ทางขวานะฮะ

จากนั้น เราก็กำหนดค่าต่างๆของการรันโปรแกรมดังรูปด้านล่างฮะ

ตั้งชื่อ task
กำหนดเวลารันโปรแกรม
กำหนดที่อยู่ของโปรแกรมและ context
เงื่อนไขโปรแกรม จากสถานะเครื่องคอมพิวเตอร์
เงื่อนไขโปรแกรม เมื่อรันล้มเหลว

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

ตัวอย่างไฟล์จะเป็นประมาณนี้ฮะ

Crontab (Unix)

Crontab เป็น Tool ที่ดีตัวนึงที่ติดเครื่อง Unix มาตั้งแต่ต้นฮะ หลักการคือ เราเขียนสคริปต์กำหนดเวลา และคำสั่งที่อยากให้ทำ รูปแบบคำสั่งคือ

[minute] [hour] [day_of_week] [date_of_month] [month] [command]

เช่น ถ้าอยากให้โปรแกรมรันทุกวัน ตอนเที่ยงคืน นั่นก็คือ

0 0 * * * bash Talend_program.sh

หมายความว่า เราอยากจะรัน Talend_program.sh ตอนเที่ยงคืน หรือก็คือ 00:00 นั่นเองฮะ ส่วนดอกจัน * หมายถึง ค่าอะไรก็ได้ เป็นวันไหน วันที่เท่าไหร่ เดือนอะไรก็ได้ อีกความหมายคือ ทุกวันนั่นเองฮะ

ถ้าอยากลองเล่นกับค่าต่างๆ ของมัน สามารถเข้าไปดูได้ที่ https://crontab.guru นะฮะ

การกำหนดคำสั่งนี้ เริ่มจากเปิด Terminal แล้วพิมพ์คำสั่งว่า crontab -e

ให้กดปุ่ม i เพื่อเปิดโหมดแก้ไข (จะมีข้อความว่า --INSERT-- อยู่ซ้ายล่าง) แล้วพิมพ์คำสั่งตามรูปข้างล่าง

แล้วเราก็บันทึกโดยกดปุ่ม Esc ก่อน เพื่อออกจากโหมดแก้ไข แล้วพิมพ์ :wq + enter ฮะ (write then quit) เท่านี้เราก็ได้ crontab มาตัวนึงแล้ว ง่ายมั้ยฮะ ถ้าเราไม่อยากให้อันไหนมันรัน เราก็แค่แก้ไฟล์นี้ด้วยคำสั่ง crontab -e เข้าไปลบบรรทัดนั้น หรือพิมพ์ # ไว้หน้าสุด เพื่อให้มันมองว่าเป็นคอมเมนต์ จะได้ไม่รันก็เท่านั้นเองฮะ

ใช้คำสั่ง crontab -l เพื่อดูว่า เราตั้งเวลารันโปรแกรมอะไร ตอนไหนไปแล้วบ้างฮะ

ผลลัพท์จะเป็นเหมือนรูปข้างล่างนี้ฮะ

และนี่ก็เป็นแค่น้ำจิ้มเล็กๆน้อยๆ สำหรับการจัดการระบบฐานข้อมูลนะฮะ Talend ยังสามารถทำอะไรได้มากกว่านี้อีก ลองไปเล่นกันดูได้นะฮะ

reference:
https://tecadmin.net/crontab-in-linux-with-20-examples-of-cron-schedule/
https://crontab.guru/