Đúng 👍
Kết hợp flock + timeout là cách chuẩn, an toàn và “sạch” nhất để đảm bảo process tự thoát, không treo, không chạy song song trên Linux (đặc biệt khi chạy cron).
👉 Kết quả: load cao, data lỗi, phải kill tay.
| Công cụ | Vai trò |
|---|---|
flock | Chỉ cho 1 process chạy tại 1 thời điểm |
timeout | Ép tự kill sau X giây |
exec | Tránh sinh shell con không cần thiết |
timeout 300s flock -n /tmp/myjob.lock \ php /var/www/domain.com/cron/cron.php
timeout 300sflock -n /tmp/myjob.lockrm lock✅ Không treo
✅ Không chạy trùng
✅ Không cần cleanup thủ công
if [ -f lock ]; then exit; fi touch lock # chạy rm lock
➡️ Script chết là lock tồn tại mãi
flock /tmp/job.lock php cron.php
➡️ Script treo = lock treo vĩnh viễn
kill -9 thủ công➡️ Mất kiểm soát, dễ kill nhầm process khác
timeout --signal=SIGTERM 300s \ flock -n /tmp/myjob.lock \ php /var/www/domain.com/cron/cron.php >> /var/log/myjob.log 2>&1