Systemd Timer Manager – Quản lý Systemd Timer – Cron WordPress cực mạnh

Systemd Timer Manager này là một công cụ quản lý systemd timer trên các hệ thống Linux sử dụng systemd. Nó cho phép bạn tạo, quản lý và theo dõi các timer một cách dễ dàng thông qua giao diện dòng lệnh (CLI) hoặc giao diện menu tương tác. Script hỗ trợ hai loại timer chính:

  • Timer chạy lệnh curl: Để thực hiện các yêu cầu HTTP định kỳ.
  • Timer chạy script bash: Để thực thi các script bash định kỳ.

Systemd Timer Manager ban đầu được tạo ra với mục đích dành cho các nhu cầu cron WordPress cực mạnh, vì nó có thể gọi ở cường độ cực cao 1s 1 lần và độ chính xác về thời gian gần như là tuyệt đối

Thay vì chạy qua WP-Cron qua Linux cron các link dạng curl https://bibica.net/wp-cron.php?doing_wp_cron > /dev/null 2>&1, giờ có thể dùng Systemd Timer Manager tạo trực tiếp từ trong systemd timer

Sau khi chạy ít ngày, cảm giác cường độ 1s 1 lần nó là 1 cái gì đó quá sức khủng bố :]]

172.18.0.2 -  28/Jan/2025:07:37:23 +0000 "GET /wp-cron.php" 200
172.18.0.2 -  28/Jan/2025:07:37:25 +0000 "POST /wp-admin/admin-ajax.php" 200
172.18.0.2 -  28/Jan/2025:07:37:29 +0000 "GET /wp-cron.php" 200
172.18.0.2 -  28/Jan/2025:07:37:30 +0000 "GET /wp-cron.php" 200
172.18.0.2 -  28/Jan/2025:07:37:29 +0000 "GET /index.php" 200
172.18.0.2 -  28/Jan/2025:07:37:31 +0000 "GET /wp-cron.php" 200
172.18.0.2 -  28/Jan/2025:07:37:32 +0000 "GET /wp-cron.php" 200
172.18.0.2 -  28/Jan/2025:07:37:33 +0000 "GET /wp-cron.php" 200

Bạn có thể xem log, trong 10s, chỉ chạy được ~6 lần wp-cron.php, dễ hiểu thì ở điều kiện sử dụng thực tế, 1.6s gọi cron 1 lần là kịch, có gọi nhanh hơn nữa, server cũng không kịp xử lý 😀

Dù ở các bài viết liên quan tới WP-Cron, giai đoạn 2017, thấy tay nào cũng khuyên set …. 30 phút chạy 1 lần??? mà năm đó trên con VPS 512 MB RAM mình vẫn chạy 1 phút 1 lần ầm ầm, chẳng thấy vẹo gì, không rõ sao xưa bà kon tư vấn set thời gian chậm quá

Sau khi chạy ít ngày mình thấy set chạy tầm 5s/1 lần là con số phù hợp

Theo mình bạn nào có nhu cầu cực cao, tested có thể set 2s gọi cron 1 lần, còn không dùng 5s 1 lần cho thoải mái, mình do các script đang dùng, sau khi chạy đều tống hết việc tiếp theo lên WP-Cron, mà WP-Cron gọi chậm quá thì thấy hiệu quả hơi phò, nên mới viết thêm script này để bú cho hết công xuất con Oracle 4 core ARM miễn phí

Systemd Timer Manager cũng có hỗ trợ trên bash script, tương tự như khi dùng curl, mà viết xong ngó lại thì các tool script mình dùng toàn là chạy ngầm 24/24 nên không có tool nào để thử, phần vì nó cũng chỉ hỗ trợ bash script thuần túy nên cũng hơi ít script chạy ổn

Cài đặt

Nhanh gọn lẹ copy dòng bên dưới ấn chạy là xong, không phải cấu hình ban đầu gì hết

mkdir -p /home/systemd-timer-manager && curl -L https://raw.githubusercontent.com/bibicadotnet/systemd-timer-manager/refs/heads/main/systemd-timer-manager.sh -o /home/systemd-timer-manager/systemd-timer-manager.sh && chmod +x /home/systemd-timer-manager/systemd-timer-manager.sh && /home/systemd-timer-manager/systemd-timer-manager.sh

Hướng dẫn sử dụng

1. Tạo timer mới

Khi menu hiển thị, chọn tùy chọn 1 để tạo timer mới:

==================
QUẢN LÝ SYSTEMD TIMER
==================
1. Tạo timer mới
2. Quản lý timer hiện có
3. Thoát
==================
Chọn: 1

Nhập tên timer:

  • Nhập tên timer là bibica-net
Nhập tên timer (chỉ chữ và số, không chứa dấu cách hoặc ký tự đặc biệt): bibica-net

Nhập đường dẫn:

  • Nhập đường dẫn URL: https://bibica.net/wp-cron.php?doing_wp_cron
Nhập URL hoặc đường dẫn script cần chạy (hoặc 'back' để quay lại): https://bibica.net/wp-cron.php?doing_wp_cron
  • Nếu muốn thử chạy trên bash script nhập trực tiếp đường dẫn vào, kiểu /home/systemd-timer-manager/systemd-timer-manager.sh, nó sẽ tự hiểu là chạy qua bash script

Nhập thời gian:

  • Nhập thời gian chạy là 5s
Nhập khoảng thời gian chạy (ví dụ: 1s, 10s, 1m) (hoặc 'back' để quay lại): 5s

Xác nhận và tạo timer:

  • Script sẽ kiểm tra thông tin và tạo timer. Nếu thành công, bạn sẽ thấy thông báo:
Timer bibica-net đã được tạo và kích hoạt thành công.

2. Quản lý timer hiện có

Hiển thị danh sách các timer hiện có và cho phép bạn dừng, bật lại, xóa hoặc sửa đổi thời gian chạy của timer.

  • Script sẽ liệt kê tất cả các timer hiện có, hiển thị trạng thái (đang hoạt động, đã dừng, đã tắt), thời gian chạy, và loại thực thi (curl hoặc bash).
  • Bạn có thể dừng, bật lại, xóa hoặc sửa đổi thời gian chạy của timer.
  • Script sử dụng màu sắc để hiển thị trạng thái của timer:
    • Màu xanh: Timer đang hoạt động.
    • Màu vàng: Timer đã được kích hoạt nhưng không chạy.
    • Màu đỏ: Timer đã bị tắt.

Trong trường hợp điền sai, muốn sửa lại, hoặc xóa đi, thì vào phần quản lý cho tiện, đỡ phải sửa tay thủ công

3. Thoát:

Thoát khỏi chương trình.

Sử dụng qua dòng lệnh (CLI)

  • Bạn cũng có thể sử dụng script qua dòng lệnh để tạo timer nhanh chóng mà không cần tương tác với menu. (phần này mình thêm vào để sau restore VPS, chạy tự động 1 lệnh cho nhanh)

Cú pháp như sau:

/home/systemd-timer-manager/systemd-timer-manager.sh create <tên-timer> <link/script> <thời gian>

Ví dụ cụ thể

/home/systemd-timer-manager/systemd-timer-manager.sh create bibica-net https://bibica.net/wp-cron.php?doing_wp_cron 5s
  • Lệnh này sẽ tạo một timer có tên bibica-net, thực hiện yêu cầu HTTP đến https://bibica.net/wp-cron.php?doing_wp_cron 5s 1 lần

Hiệu quả

Systemd Timer Manager – Quản lý Systemd Timer – Cron WordPress cực mạnh

Ở cường độ 2s-5s chạy cron 1 lần, thông số đều tăm tắp, không bị giật lệch time như 1s 1 lần

172.18.0.2 -  28/Jan/2025:08:24:15 +0000 "GET /wp-cron.php" 200
172.18.0.2 -  28/Jan/2025:08:24:17 +0000 "GET /wp-cron.php" 200
172.18.0.2 -  28/Jan/2025:08:24:19 +0000 "GET /wp-cron.php" 200
172.18.0.2 -  28/Jan/2025:08:24:21 +0000 "GET /wp-cron.php" 200
172.18.0.2 -  28/Jan/2025:08:24:23 +0000 "GET /wp-cron.php" 200
172.18.0.2 -  28/Jan/2025:08:24:25 +0000 "GET /wp-cron.php" 200
172.18.0.2 -  28/Jan/2025:08:24:27 +0000 "GET /wp-cron.php" 200
172.18.0.2 -  28/Jan/2025:08:24:29 +0000 "GET /wp-cron.php" 200
172.18.0.2 -  28/Jan/2025:08:24:31 +0000 "GET /wp-cron.php" 200
172.18.0.2 -  28/Jan/2025:08:24:33 +0000 "GET /wp-cron.php" 200
172.18.0.2 -  28/Jan/2025:08:24:35 +0000 "GET /wp-cron.php" 200

Sử dụng thực tế mình hài lòng với tốc độ này, tạm vẫn đang chạy tiếp xem có ảnh hưởng gì tới hiệu năng toàn hệ thống không, mà con VPS Oracle khỏe quá, nên chạy gì cũng thấy như muỗi chích cả 😛


Related Posts

Chính sách bình luận: Chúng tôi rất trân trọng các bình luận của bạn và cảm ơn thời gian bạn dành để chia sẻ ý tưởng và phản hồi.
Ghi chú: Những bình luận được xác định là spam hoặc chỉ mang tính quảng cáo sẽ bị xóa.

• Để cải thiện trải nghiệm bình luận, chúng tôi khuyến khích bạn tạo một tài khoản Gravatar. Thêm avatar vào tài khoản Gravatar sẽ giúp bình luận của bạn dễ nhận diện hơn đối với các thành viên khác.

✂️ Sao chép và 📋 Dán Emoji 💪 giúp bình luận thêm sinh động và thú vị!