ใช้ systemd ให้สคริปต์รันตลอด ใน Debian Server

 ขั้นตอนที่ 1 — สร้าง service file
สร้างไฟล์ service ก่อน (ตัวนี้จะเป็นคำสั่งที่รัน Python จริงๆ)
sudo nano /etc/systemd/system/job.service

ใส่เนื้อหานี้ 👇

[Unit]

Description=Run Python job every 2 minutes

[Service]

Type=simple

ExecStart=/usr/bin/python3 /home/user/job.py

WorkingDirectory=/home/user

User=root

ขั้นตอนที่ 2 — สร้าง timer file
สร้างไฟล์ timer ที่จะกำหนดช่วงเวลาให้ systemd เรียกใช้ service นี้
sudo nano /etc/systemd/system/job.timer

ใส่เนื้อหานี้ 👇

[Unit]

Description=Run job.service every 2 minutes

[Timer]

OnBootSec=1min

OnUnitActiveSec=2min

Unit=job.service

[Install]

WantedBy=timers.target

💡 ความหมาย:

OnBootSec=1min → เริ่มทำงานครั้งแรกหลังจากบูตเครื่อง 1 นาที
OnUnitActiveSec=2min → เรียกซ้ำทุกๆ 2 นาที


ขั้นตอนที่ 3 — เปิดใช้งาน timer
sudo systemctl daemon-reload
sudo systemctl enable --now job.timer

ตรวจสอบสถานะ:
systemctl list-timers --all

จะเห็นรายการประมาณนี้:
NEXT                         LEFT       LAST                         PASSED    UNIT       ACTIVATES
Mon 2025-10-27 20:00:00 UTC  1min 30s   Mon 2025-10-27 19:58:00 UTC  30s ago  job.timer  job.service

ขั้นตอนที่ 4 — ดู log การทำงาน
เช็ก log ของสคริปต์ได้โดย:
sudo journalctl -u job.service -f

หรือดู log ย้อนหลัง:
sudo journalctl -u job.service

ถ้าจะปิดการทำงานต้องทำยังไง?

1️⃣ ปิดการทำงานชั่วคราว (หยุดชั่วคราว)
sudo systemctl stop job.timer

ตรวจสอบสถานะ:
sudo systemctl status job.timer

จะเห็นว่า timer ถูก “inactive (dead)” แล้ว ✅
หมายเหตุ: service (job.service) จะไม่ถูกเรียกอีกจนกว่าจะ start timer ใหม่

 2️⃣ ปิดการทำงานถาวร (ไม่ให้เริ่มอัตโนมัติหลังบูต)
ใช้คำสั่งนี้:
sudo systemctl disable job.timer

หากต้องการหยุดและปิดพร้อมกัน:
sudo systemctl stop job.timer
sudo systemctl disable job.timer

ตรวจสอบว่าไม่อยู่ในรายการ timer ที่ทำงาน:
systemctl list-timers --all

3️⃣ (ถ้าอยากเปิดใช้งานอีกครั้ง)

รันคำสั่งกลับได้เลย:
sudo systemctl enable --now job.timer


ถ้าต้องการลบออกจากระบบ

หากคุณไม่ต้องการให้มี timer/service นี้อีกต่อไป:
sudo systemctl stop job.timer
sudo systemctl disable job.timer
sudo rm /etc/systemd/system/job.timer
sudo rm /etc/systemd/system/job.service
sudo systemctl daemon-reload

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

วิธีใช้งาน Ubuntu Server && Debian Server

ติดตั้ง pip3 ใน linux และวิธีใช้งาน

สร้าง Service ให้ Run สคริปต์ Python ใน Debian