Hướng dẫn đầy đủ về cách lên lịch sao lưu và các tác vụ tự động với Cron trên Linux

Cập nhật lần cuối: 28 Tháng Tám 2026
  • Cách thức hoạt động của tiến trình nền crond và cách quản lý các tác vụ bằng tệp crontab.
  • Cú pháp chi tiết và cách sử dụng các ký tự đặc biệt để lập trình thực thi chính xác.
  • Triển khai các kịch bản sao lưu bằng TAR và tự động hóa việc bảo trì hệ thống.
  • Các giải pháp thay thế hiện đại như bộ định thời systemd và các công cụ đồ họa để quản lý tiến trình.

Cơ sở hạ tầng của một trung tâm dữ liệu hiện đại với các giá đỡ máy chủ để lưu trữ hệ điều hành Linux.

Cho dù bạn mới chuyển sang sử dụng Linux hay đã quản lý máy chủ của riêng mình một thời gian, bạn có lẽ đã nhận ra rằng một số tác vụ thực sự rất phiền phức khi thực hiện thủ công. Từ việc dọn dẹp các tập tin tạm thời đến việc đảm bảo dữ liệu của bạn được an toàn bằng cách sao lưu, tự động hóa các quy trình này là chìa khóa để tránh sự bực bội và ngăn chặn một sơ suất nhỏ làm mất đi công sức cả tháng trời.

Để giải quyết vấn đề này, các hệ thống giống UNIX có một công cụ huyền thoại gọi là Cron. Về cơ bản, nó giống như một chiếc đồng hồ báo thức cho các lệnh , khởi chạy các tập lệnh hoặc ứng dụng vào đúng thời điểm bạn chỉ định, hoạt động ngầm trong khi bạn uống cà phê hoặc hoàn toàn quên mất sự tồn tại của tác vụ.

Quản trị viên hệ thống đang giám sát các tiến trình thời gian thực trong cửa sổ terminal Linux đa cửa sổ.
Bài viết liên quan:
Hướng dẫn đầy đủ về giám sát tài nguyên trong Linux: từ cơ bản đến nâng cao.

Cron thực chất là gì và nó hoạt động như thế nào?

Ảnh chụp màn hình terminal Linux hiển thị cấu hình các tác vụ theo lịch trình trong tệp crontab.

Khi nói về Cron, thực chất chúng ta đang đề cập đến một tiến trình nền có tên là crond . Trong thế giới Linux, tiến trình nền đơn giản là một tiến trình chạy ngầm, không có giao diện người dùng, từ lúc hệ thống khởi động. Nhiệm vụ của nó khá đơn điệu nhưng rất quan trọng: cứ mỗi phút, nó kiểm tra các tệp cấu hình để xem có bất kỳ tác vụ cron nào được lên lịch phù hợp với thời gian và ngày hiện tại hay không.

Để mọi thứ hoạt động trơn tru, việc thiết lập chính xác đồng hồ hệ thống là vô cùng quan trọng. Nếu thời gian hoặc múi giờ không chính xác, quá trình sao lưu sẽ chạy sai giờ. Do đó, bạn nên sử dụng lệnh `timedatectl` để kiểm tra xem việc đồng bộ hóa với máy chủ NTP có chính xác hay không, đảm bảo hệ thống không có bất kỳ sự sai lệch nào về thời gian.

Tệp Crontab: Nơi điều kỳ diệu xảy ra

Nếu Cron là động cơ, thì crontab là bản đồ hướng dẫn . Đó là một tệp văn bản nơi chúng ta ghi lại những gì chúng ta muốn chạy và khi nào. Điều thú vị là không chỉ có một tệp duy nhất; hệ thống có một crontab toàn cục tại /etc/crontab, nhưng mỗi người dùng có thể có crontab riêng của mình , cho phép những người khác nhau lên lịch các tác vụ của họ mà không cần quyền quản trị viên mọi lúc.

Phòng thí nghiệm Docker Compose
Bài viết liên quan:
Docker Compose trong Homelab: tổ chức, cấu hình và các phương pháp tốt nhất

Để quản lý các tác vụ này, chúng ta sử dụng lệnh `crontab -e` để chỉnh sửa, `crontab -l` để liệt kê các tác vụ đang hoạt động và `crontab -r` nếu muốn xóa mọi thứ và bắt đầu lại từ đầu. Đây là một cách rất hiệu quả để tổ chức việc bảo trì hệ thống mà không cần động đến các tệp nhân hệ điều hành quan trọng.

  Những khó khăn mà người dùng Linux gặp phải khi sử dụng Windows 11

Phân tích cú pháp của Cron

Bàn làm việc với máy tính xách tay và ổ cứng ngoài để sao lưu dữ liệu.

Để lên lịch cho một tác vụ, bạn phải tuân theo một trình tự rất nghiêm ngặt gồm năm trường thời gian, tiếp theo là lệnh. Trình tự là: phút, giờ, ngày trong tháng, tháng và ngày trong tuần . Ví dụ, nếu chúng ta nhập 0 19 * * 0, chúng ta đang yêu cầu hệ thống kích hoạt lúc 7 giờ tối Chủ nhật hàng tuần.

Để cuộc sống của chúng ta dễ dàng hơn, có... nhân vật đặc biệt điều này cho phép chúng ta kiểm soát hoàn toàn. Dấu hoa thị (*) có nghĩa là "luôn luôn" hoặc "bất kỳ giá trị nào", trong khi dấu gạch chéo (/) được sử dụng để xác định các khoảng, chẳng hạn như */10 Để chạy một tác vụ nào đó cứ sau mười phút. Dấu gạch ngang (-) xác định phạm vi và dấu phẩy (,) cho phép bạn liệt kê các giá trị cụ thể. Ngoài ra còn có phím tắt được xác định trước Ví dụ như @daily, @weekly hoặc @reboot, giúp đơn giản hóa việc viết bài trong những trường hợp phổ biến nhất.

Tạo hệ thống sao lưu đầu tiên của bạn

Một trong những ứng dụng hữu ích nhất là sao lưu dữ liệu. Để làm điều này, công cụ TAR là lựa chọn lý tưởng nhất . Chúng ta có thể tạo một kịch bản Bash để đóng gói các tệp tin, gán ngày hiện tại cho tên tệp và, điều rất quan trọng, loại trừ các thư mục không cần thiết như bộ nhớ cache hoặc thùng rác để bản sao lưu không trở thành hàng gigabyte dữ liệu rác.

đo lường mức tiêu thụ năng lượng của phòng thí nghiệm tại nhà
Bài viết liên quan:
Cách đo lường và tối ưu hóa mức tiêu thụ điện năng của phòng thí nghiệm tại nhà

Sau khi tạo tập lệnh (ví dụ: trong /usr/local/bin/mybackup) và cấp quyền thực thi bằng lệnh chmod +x , chỉ cần thêm một dòng vào crontab của người dùng root. Bằng cách này, máy chủ sẽ tự động thực hiện sao lưu và bạn thậm chí có thể lên lịch cho tập lệnh tự động xóa các bản sao lưu cũ hơn hai tuần để tránh làm đầy ổ cứng.

  Lập trình có cấu trúc: Mọi thứ bạn cần biết

Quản trị nâng cao và đường dẫn tuyệt đối

Quản trị viên hệ thống đang làm việc với máy tính xách tay trong phòng máy chủ chuyên nghiệp.

Một lỗi rất phổ biến ở người mới bắt đầu là sử dụng đường dẫn tương đối trong các tập lệnh của họ. Cron hoạt động trong một môi trường rất hạn chế và không biết vị trí của bạn, vì vậy bạn luôn nên sử dụng đường dẫn tuyệt đối (ví dụ: /home/user/script.sh thay vì ./script.sh). Nếu không, lệnh sẽ thất bại mà không báo lỗi, và bạn sẽ gặp phải một bất ngờ khó chịu khi cần khôi phục dữ liệu của mình.

Để tránh rơi vào tình thế mù mịt, điều này vô cùng quan trọng. Chuyển hướng đầu ra sang nhật kýSử dụng toán tử >>> /var/log/backup.log 2>&1Chúng ta có thể lưu cả những thành công và thất bại vào một tập tin. Bằng cách đó, nếu có sự cố xảy ra, chúng ta chỉ cần xem tập tin nhật ký để biết chính xác điều gì đã xảy ra mà không cần phải đoán mò.

Tác động đến hiệu suất và các phương pháp thực hành tốt nhất

Không nên quá tải hệ thống bằng các tác vụ chạy mỗi giây, vì điều này có thể gây ra hiện tượng tăng đột biến mức sử dụng CPU và RAM . Cách tiếp cận thông minh nhất là lên lịch các quy trình tiêu tốn nhiều tài nguyên, chẳng hạn như cập nhật cơ sở dữ liệu hoặc sao lưu dữ liệu lớn, vào những giờ sáng sớm hoặc ngoài giờ cao điểm để tránh ảnh hưởng đến người dùng.

Dịch vụ gửi thư miễn phí cho doanh nghiệp vừa và nhỏ
Bài viết liên quan:
Tiếp thị email miễn phí cho doanh nghiệp vừa và nhỏ: các công cụ và chiến lược quan trọng

Để tránh tình trạng tác vụ chồng chéo với tác vụ khác nếu tác vụ đầu tiên mất nhiều thời gian hơn dự kiến, nên sử dụng flock , giúp ngăn chặn việc thực thi đồng thời cùng một tập lệnh. Ngoài ra, để hạn chế người dùng Cron, quản trị viên có thể cấu hình các tệp cron.allow và cron.deny , đảm bảo chỉ những người được ủy quyền mới có thể lên lịch tác vụ trên máy chủ.

Các giải pháp thay thế hiện đại: Bộ hẹn giờ Systemd và nhiều hơn nữa

Mặc dù Cron là một công cụ kinh điển, nhưng các hệ thống hiện đại sử dụng bộ hẹn giờ systemd . Chúng mạnh mẽ hơn nhiều vì cho phép bạn quản lý các phụ thuộc, xử lý lỗi hiệu quả hơn và thực hiện các tác vụ dựa trên các sự kiện hệ thống (như khởi động) chứ không chỉ dựa vào đồng hồ. Chúng được cấu hình bằng cách sử dụng các tệp .timer và .service trong /etc/systemd/system/.

  Tất cả về Kế thừa trong Lập trình hướng đối tượng

Đối với những người không quen thuộc với giao diện dòng lệnh, có các tùy chọn đồ họa như KCron (cho KDE) hoặc các công cụ dựa trên web như Webmin. Trên các hệ điều hành khác, chẳng hạn như macOS, launchd được sử dụng , cung cấp khả năng tích hợp sâu hơn nhiều với hệ sinh thái của Apple, cho phép tự động khởi động lại các tác vụ bị lỗi.

Các trường hợp sử dụng thực tế khác trên máy chủ

Ngoài chức năng sao lưu, Cron là công cụ hoàn hảo để giữ cho hệ thống của bạn luôn sạch sẽ . Bạn có thể lên lịch các tác vụ để xóa nhật ký cũ hàng tuần hoặc khởi động lại các dịch vụ thường xuyên bị lỗi. Nó cũng rất cần thiết cho việc đồng bộ hóa dữ liệu bằng rsync giữa các máy khác nhau, đảm bảo rằng thông tin được sao chép mà không cần sự can thiệp của con người.

Trong môi trường web, Cron được sử dụng liên tục để gửi email hàng loạt , tạo báo cáo bán hàng hàng ngày hoặc cập nhật bộ nhớ cache của trang. Về cơ bản, bất kỳ hành động lặp đi lặp lại và có thể dự đoán được nào cũng có thể và nên được giao cho Cron để tối ưu hóa năng suất của người quản trị.

Nắm vững tự động hóa trong Linux cho phép bạn biến một máy chủ được quản lý thủ công thành một cỗ máy tự động và hiệu quả. Bằng cách kết hợp việc sử dụng các tập lệnh Bash, độ chính xác của crontab và giám sát nhật ký, bạn có thể đảm bảo rằng việc bảo trì, bảo mật và tính toàn vẹn dữ liệu được xử lý tự động, giúp tiết kiệm thời gian và giảm đáng kể tỷ lệ lỗi do con người trong quản lý cơ sở hạ tầng.