คือ ก็ไม่รู้จริงๆ มันเรียกว่าอะไร ไอ้ไฟล์นี้ แต่คือมันทำหน้าที่ ไม่ให้ run process ซ้ำกรณี คิดว่า script เราทำงาน นานแหงๆ
คือโดยทั่วไป เราจะสั่ง touch
(ไปแตะไฟล์ เพราะให้ modify time มันเป็นปัจจุบัน หรือ สร้างไฟล์ใหม่เลย กรณีไม่มี) ก่อนที่จะเริ่มทำงาน แล้วก็ ลบมันทิ้ง ตอนทำงานเสร็จแล้ว เช่น แบบนี้
#!/bin/bash
if [[ -f /tmp/process.running ]] ; then
exit
fi
touch /tmp/process.running
# ----- PROCESS SCRIPT
rm /tmp/process.running
แต่มันก็มี กรณี มันทำงานไม่เสร็จ ดันเจอ exit code
โดยที่ยังไปไม่ถึง rm
เลย ทำให้ไฟล์ running นี่ ค้างไว้ซะงั้น แล้วก็ทำให้ไม่สามารถรันงานรอบต่อไปได้ จนกว่าจะมีคนไปลบไฟล์ running ทิ้ง
หลังจาก งมหาอยู่นานว่า แล้วเราจะตั้งเวลา ให้ไฟล์มันหมดอายุยังไงหว่า เช่น ยังไง process เราก็ทำงานไม่เกิน 30 นาทีอยู่แล้ว ถ้าไฟล์ที่ค้างเก่ากว่า 30 นาที ก็เหมือนว่า รอบที่แล้วมันทำงานไม่สำเร็จ ก็ให้มันเริ่มงานต่อได้เลย อะไรงี้
ปรากฏว่าไปเจอวิธีประหลาด คือ ให้ touch อีกไฟล์ โดยให้เวลาถอยไป 30 นาที แทน แล้วก็ค่อยเอามาเทียบว่า ไฟล์ที่เรามี เก่ากว่าไฟล์นี้รึเปล่า (ทำไมมันอ้อมโลก ยังไงไม่รู้) ดังตัวอย่างนี้
#!/bin/bash
touch -d '30 minutes ago' /tmp/process.limit
if [[ -f /tmp/process.running ]] && [[ /tmp/process.running -nt /tmp/process.limit ]] ; then
exit
fi
touch /tmp/process.running
# ----- PROCESS SCRIPT
rm /tmp/process.running