Nâng cao
6 phút đọc4 tháng 6, 2026264

Cronboard: Quản lý cron job trên terminal như một pro

Chán ngồi ssh vào server rồi gõ crontab -e? Cronboard cho bạn một TUI dashboard xịn để quản lý cron job cả local lẫn remote.

N

Nguyễn Nhật Long

@nguyennhatlong1303

Cronboard: Quản lý cron job trên terminal như một pro

Ai làm backend hay DevOps chắc đều quen với cái vòng lặp quen thuộc: ssh vào server, gõ crontab -e, nhìn chằm chằm vào đống cron expression, tự hỏi cái job chạy lúc 0 3 * * 1 này là cái gì, rồi sửa xong không biết lần chạy tiếp theo là bao giờ. Mình đã làm vậy nhiều năm và thấy nó... ổn, nhưng không thoải mái chút nào.

Gần đây mình tình cờ thấy Cronboard trên GitHub - một terminal dashboard viết bằng Python, dùng framework Textual để render UI ngay trong terminal. Cái tool này được chọn là "Terminal Trove Tool of the Week" hồi cuối tháng 10/2025, và sau khi thử qua thì mình hiểu tại sao nó được chú ý.

Vấn đề thực sự với crontab -e

Nếu bạn chỉ có 2-3 cron job thì crontab -e vẫn ổn. Nhưng khi số lượng job tăng lên, hoặc bạn phải quản lý cron trên nhiều server khác nhau, mọi thứ bắt đầu trở nên khó chịu:

  • Không có cách nào xem "lần chạy tiếp theo là khi nào" một cách trực quan
  • Muốn tạm dừng một job phải comment out thủ công
  • Log của từng job thì phải tự biết đường đi tìm
  • Cron expression như */15 9-17 * * 1-5 thì ai nhớ nổi nó nghĩa là gì khi nhìn lại sau 3 tháng
  • Quản lý cron trên remote server thì phải ssh vào từng cái một

Cronboard giải quyết hết đống này bằng một interface chạy ngay trong terminal.

Giao diện TUI - không phải GUI, nhưng đủ xịn

Cronboard dùng Textual - một Python framework để build TUI (Terminal User Interface) app. Nếu bạn chưa biết Textual thì đây là cái framework cho phép bạn làm UI với layout, widget, event handling... nhưng chạy hoàn toàn trong terminal. Không cần browser, không cần Electron, không cần gì cả ngoài terminal của bạn.

Giao diện của Cronboard hiển thị danh sách cron job dạng bảng, có thể thấy ngay:

  • Schedule expression (và bên cạnh là mô tả human-readable, ví dụ "Every 15 minutes")
  • Thời gian chạy lần cuối
  • Thời gian chạy tiếp theo
  • Trạng thái của job

Mình thấy cái phần human-readable feedback này hay ở chỗ nó dùng thư viện cron-descriptor để tự động dịch cron expression ra tiếng người. Thay vì nhìn 0 9 * * 1-5 và phải tự parse trong đầu, bạn thấy luôn "At 09:00 AM, Monday through Friday".

Cài đặt nhanh

Cronboard yêu cầu Python 3.13 trở lên. Bạn có thể cài bằng pip hoặc uv - mình khuyên dùng uv vì nhanh hơn nhiều:

Terminal
1# Dùng uv (khuyên dùng)
2uv tool install cronboard
3
4# Hoặc pip
5pip install cronboard

Trước khi cài, chắc chắn máy bạn đã có croncrontab available:

Terminal
1crontab -l

Nếu lệnh này chạy được (dù output là empty) thì bạn ổn. Sau khi cài xong, chỉ cần:

Terminal
1cronboard

Là dashboard bật lên ngay trong terminal.

Những feature thực sự hữu ích

Kết nối remote server qua SSH

Đây là feature mình thấy valuable nhất. Thay vì ssh vào từng server để quản lý cron, Cronboard cho bạn connect trực tiếp từ dashboard:

  • Hỗ trợ cả password auth lẫn SSH key
  • Khi dùng SSH key, nó tự động look up ~/.ssh/known_hosts ở default location
  • Sau khi connect, bạn thao tác với cron job trên remote server y hệt như local

Anh em lưu ý: khi dùng SSH key thì server phải đã có trong known_hosts của bạn. Nếu chưa có thì ssh thủ công vào một lần trước để nó tự thêm vào.

Quản lý cron job của user khác

Cronboard hỗ trợ manage cron job cho user khác, miễn là bạn có sudo access. Cái này hữu ích khi bạn là DevOps cần quản lý cron của service account (như www-data, deploy,...) mà không muốn switch user.

Tất nhiên phải có quyền sudo thì mới làm được, tool không bypass security được.

Pause/Resume thay vì xóa

Thay vì phải comment out hoặc xóa hẳn một job, bạn có thể pause nó. Đây là một trong những thứ crontab -e thuần không có - muốn tắt tạm thì chỉ có cách comment # vào tay. Cronboard handle việc này sạch hơn.

Autocompletion cho path

Khi tạo hoặc edit cron job, phần command thường có đường dẫn tới script. Cronboard có autocompletion cho path, bắt đầu từ home directory của user đang được manage. Nhấn Tab để accept suggestion - nhỏ nhưng tiện khi bạn không nhớ chính xác path.

Special expressions

Ngoài cron expression chuẩn, Cronboard hỗ trợ các shorthand quen thuộc:

ExpressionTương đươngÝ nghĩa
`@daily``0 0 * * *`Mỗi ngày lúc nửa đêm
`@weekly``0 0 * * 0`Mỗi tuần, Chủ nhật
`@monthly``0 0 1 * *`Ngày đầu mỗi tháng
`@yearly``0 0 1 1 *`Ngày đầu năm
`@hourly``0 * * * *`Mỗi giờ

Stack kỹ thuật bên dưới

Nếu bạn tò mò về cách nó được build:

Theo kinh nghiệm của mình, Textual là một framework khá solid cho TUI app - nó handle keyboard navigation, layout, theming tốt hơn nhiều so với tự build với curses. Paramiko thì là standard library cho SSH trong Python ecosystem, không có gì bàn cãi.

Thư việnVai trò
[Textual](https://github.com/Textualize/textual)TUI framework, render toàn bộ UI trong terminal
[python-crontab](https://pypi.org/project/python-crontab/)Read/write crontab file
[Paramiko](https://www.paramiko.org/)SSH connection tới remote server
[cron-descriptor](https://pypi.org/project/cron-descriptor/)Convert cron expression sang human-readable text

Một số điều cần lưu ý trước khi dùng production

Cronboard hiện vẫn đang trong trạng thái under development - repo có ghi rõ điều này. Mình không nói để discourage bạn dùng, mà để bạn set expectation đúng:

  • Có thể còn bug hoặc edge case chưa được handle
  • API/behavior có thể thay đổi giữa các version
  • Nên test kỹ trên môi trường dev/staging trước khi dùng để manage cron job production quan trọng

Dự án đang có 1.4k stars trên GitHub và khá active (309 commits), nên mình nghĩ nó sẽ tiếp tục được maintain tốt.

So với các lựa chọn khác

Cronboard nằm ở sweet spot: không cần setup server hay web app như Rundeck/Airflow, nhưng vẫn có đủ feature để làm việc thoải mái hơn crontab -e thuần. Nếu bạn không muốn overkill với một scheduling system phức tạp mà chỉ cần manage cron job một cách dễ chịu hơn, đây là lựa chọn hợp lý.

ToolInterfaceRemote SSHPause/ResumeHuman-readable schedule
`crontab -e`Text editor❌ (manual comment)
CronboardTUI dashboard
Cron web UIs (self-hosted)Browser
Rundeck/AirflowBrowser

Mình đang dùng nó để manage cron job trên mấy server staging và thấy workflow nhanh hơn hẳn. Không phải tool thay thế cho tất cả mọi use case, nhưng với ai hay làm việc với cron job thường xuyên thì đáng thử. Repo ở đây: github.com/antoniorodr/cronboard, doc đầy đủ ở cronboard.dev.

NN

Nguyễn Nhật Long

@nguyennhatlong1303

Nguyễn Nhật Long is a Senior Frontend Engineer and Frontend Team Leader with 7 years of experience building real-time fintech platforms. Specializing in React, Next.js, TypeScript, and React Native, shipping 10+ products across Web, Mobile, Telegram Mini-Apps, and Web3.

Thấy hay? Chia sẻ cho bạn bè!