Liên hệProfile
Danh mục

Mục Lục

    Hướng dẫn sử dụng lệnh at Linux để thiết lập lịch tác vụ một lần chuyên nghiệp

    Nguyễn Hưng

    Ngày đăng:

    03/04/2026

    Cập nhật lần cuối:

    03/04/2026

    Lượt xem:
    Chia sẻ
    Đánh giá
    5/5 - (1 bình chọn)

    Nguyễn Hưng

    Lượt xem:
    Ngày đăng:

    03/04/2026

    Cập nhật lần cuối:

    03/04/2026

    Mục lục

    Lệnh at Linux là một công cụ lập lịch tác vụ dùng để chạy một câu lệnh hoặc script một lần vào một thời điểm cụ thể trong tương lai và được thực thi bởi dịch vụ nền atd. Trong bài viết dưới đây, mình sẽ cùng bạn tìm hiểu về cách thiết lập lịch tác vụ chi tiết, nhanh chóng với lệnh at.

    Những điểm chính

    Quan điểm của mình: Trong thời đại tự động hóa với Ansible hay Terraform, lệnh at vẫn giữ nguyên giá trị như một công cụ “nhẹ và nhanh” cho các tác vụ một lần — không cần viết playbook, không cần pipeline, chỉ cần một dòng lệnh là xong. Đây là kỹ năng nền tảng mà bất kỳ quản trị viên Linux nào cũng nên thành thạo trước khi chuyển sang các giải pháp phức tạp hơn. Bên dưới đây là phần tóm tắt nội dung chính trong bài viết bạn cần nắm rõ:

    • Khái niệm: Hiểu rõ lệnh at là công cụ chuyên dụng để lập lịch thực thi các tác vụ duy nhất một lần tại một thời điểm cụ thể trong tương lai.
    • Lý do sử dụng: Biết được các ưu điểm vượt trội của lệnh at như tiết kiệm thời gian quản trị, hỗ trợ ngôn ngữ tự nhiên và giảm tải cho hệ thống.
    • Yêu cầu cài đặt: Nắm vững quy trình cài đặt và kích hoạt dịch vụ nền atd trên các hệ điều hành phổ biến như Ubuntu, Debian, CentOS và RHEL.
    • Cách sử dụng thực tế: Thành thạo các kỹ năng lập lịch lệnh trực tiếp, chạy kịch bản từ file, kiểm tra hàng đợi và hủy bỏ tác vụ khi cần thiết.
    • Cú pháp thời gian: Biết cách sử dụng các quy tắc thời gian linh hoạt và thông minh để hẹn giờ chính xác cho các công việc quan trọng.
    • Lưu ý quan trọng: Ghi nhớ các quy tắc về đường dẫn tuyệt đối, quản lý nhật ký và kiểm soát múi giờ để đảm bảo tác vụ vận hành ổn định.
    • Câu hỏi thường gặp: Giải đáp các thắc phổ biến liên quan đến lệnh at Linux.

    Lệnh at Linux là gì?

    at Linux là một tiện ích giao diện dòng lệnh cho phép người dùng thiết lập lịch trình để hệ thống tự động thực thi các câu lệnh hoặc kịch bản vào một thời điểm và ngày tháng cụ thể trong tương lai. Đặc điểm quan trọng nhất của các tác vụ được khởi tạo qua lệnh at là chúng chỉ chạy duy nhất một lần, giúp lệnh này trở thành công cụ tối ưu cho việc quản lý các công việc mang tính chất thời điểm và không cần lặp lại.

    Bên cạnh đó, hệ thống còn cung cấp các công cụ bổ trợ đi kèm để tăng cường khả năng quản lý. Cụ thể, bạn có thể sử dụng lệnh at cùng với các tiện ích như batch, atq và atrm để thực hiện việc tạo mới, theo dõi danh sách hoặc xóa bỏ các tác vụ đã lên lịch một cách dễ dàng.

    at Linux là lệnh cho phép thiết lập lịch để hệ thống tự động thực thi vào một thời điểm và cụ thể trong tương lai
    at Linux là lệnh cho phép thiết lập lịch để hệ thống tự động thực thi vào một thời điểm và cụ thể trong tương lai

    Nhiều người mới dùng Linux thường nhầm lẫn giữa atcrontab. Theo kinh nghiệm của mình, cách phân biệt đơn giản nhất là: at dùng cho tác vụ chạy một lần duy nhất rồi tự động xóa khỏi hàng đợi, còn crontab dùng cho tác vụ chạy lặp đi lặp lại theo lịch trình cố định. Nếu bạn chỉ cần thực thi một lệnh vào một thời điểm cụ thể mà không cần lặp lại, hãy chọn at thay vì tạo một dòng cron rồi phải nhớ xóa sau.

    Lý do nên sử dụng lệnh at Linux

    Dưới đây là những lý do quan trọng mà bạn nên sử dụng lệnh at để quản lý và tối ưu hóa quy trình vận hành hệ thống:

    • Tự động hóa tác vụ ngoài giờ hành chính: Thay vì phải trực tiếp để gõ lệnh khởi động lại Web Server vào lúc 11:45 PM, bạn có thể thiết lập lịch trình để hệ thống tự thực thi vào thời điểm lưu lượng truy cập thấp nhất.
    • Tiết kiệm thời gian quản trị so với crontab: Đối với các công việc chỉ thực hiện một lần, lệnh at sẽ tự động xóa tác vụ khỏi danh sách sau khi hoàn thành. Điều này giúp bạn không cần phải vào xóa dòng lệnh thủ công như khi dùng crontab, tránh rủi ro tác vụ bị lặp lại sai ý muốn vào ngày hôm sau.
    • Tránh gây quá tải hệ thống trong giờ cao điểm: Bạn có thể chủ động chuyển các kịch bản tiêu tốn nhiều tài nguyên như sao lưu dữ liệu lớn hoặc tổng hợp báo cáo nặng sang các khung giờ hệ thống đang nhàn rỗi.
    • Lập lịch nhanh chóng với ngôn ngữ tự nhiên: Cú pháp của lệnh at linh hoạt và dễ thao tác, giúp bạn thiết lập giờ chạy nhanh chóng trong các tình huống khẩn cấp mà không cần tính toán quy tắc thời gian phức tạp.
    • Hỗ trợ thực thi dựa trên tải hệ thống: Thông qua tiện ích batch đi kèm, bạn có thể ra lệnh cho hệ thống chỉ bắt đầu thực hiện tác vụ khi mức độ chiếm dụng CPU giảm xuống dưới ngưỡng quy định, đảm bảo tính ổn định tối đa cho máy chủ.
    Lý do nên sử dụng lệnh at Linux
    Lý do nên sử dụng lệnh at Linux

    Yêu cầu cài đặt lệnh at Linux

    Để sử dụng lệnh at, bạn cần đảm bảo dịch vụ atd đã được cài đặt và đang chạy trên hệ thống. Đối với hệ điều hành Debian hoặc Ubuntu, bạn thực hiện cài đặt và kích hoạt dịch vụ bằng các lệnh sau:

    apt install at 
    systemctl enable atd 
    systemctl start atd

    Đối với hệ điều hành CentOS hoặc RHEL, bạn sử dụng các lệnh tương ứng bên dưới đây:

    yum install at 
    systemctl enable atd 
    systemctl start atd

    1. Lập lịch tác vụ cho một lần thực thi

    Để giao nhiệm vụ cho hệ thống thực hiện một lệnh vào một giờ cụ thể, ví dụ như tái khởi động Nginx vào lúc 11:45 tối, bạn hãy sử dụng lệnh sau:

    echo "sudo systemctl restart nginx" | at 11:45 PM
    Lập lịch tác vụ cho một lần thực thi
    Lập lịch tác vụ cho một lần thực thi

    Câu lệnh echo truyền nội dung cần thực thi qua đường ống (|). Lệnh at tiếp nhận đầu vào và lập lịch chạy vào đúng 11:45 PM. Hệ thống sẽ trả về một mã định danh Job ID để bạn quản lý.

    2. Hiển thị danh sách các công việc đang chờ

    Trong trường hợp bạn cần xem lại những tác vụ đã được lập lịch và đang chờ đến giờ thực hiện, bạn sử dụng lệnh:

    at -l

    Hoặc bạn có thể sử dụng lệnh tương đương sau:

    atq
    Hiển thị danh sách các công việc đang chờ
    Hiển thị danh sách các công việc đang chờ

    Lệnh này sẽ liệt kê danh sách công việc bao gồm Job ID, ngày giờ thực thi dự kiến và hàng đợi tương ứng.

    3. Hủy bỏ một tác vụ đã lập lịch

    Nếu bạn thay đổi kế hoạch hoặc phát hiện lỗi trong lệnh đã đặt lịch trước đó, bạn có thể xóa bỏ tác vụ bằng cách sử dụng mã Job ID như sau:

    at -r [JOB_ID]

    Ví dụ, để hủy bỏ tác vụ có mã Job ID là 1, bạn dùng lệnh:

    at -r 1
    Hủy bỏ một tác vụ đã lập lịch
    Hủy bỏ một tác vụ đã lập lịch

    Tùy chọn -r (remove) sẽ thực hiện việc xóa công việc khỏi hàng đợi dựa trên mã định danh chính xác.

    4. Lập lịch tác vụ từ file

    Để thực thi một kịch bản phức tạp chứa nhiều câu lệnh mà không cần nhập tay từng dòng, bạn sử dụng tùy chọn -f trỏ đến tệp tin script:

    at -f cleanup.sh now + 1 hour
    Lập lịch tác vụ từ file
    Lập lịch tác vụ từ file

    Tùy chọn -f chỉ định at đọc các lệnh từ file. Đồng thời, cú pháp now + 1 hour sẽ yêu cầu hệ thống thực hiện tác vụ sau 1 giờ tính từ thời điểm hiện tại.

    Từ kinh nghiệm thực tế, mình luôn dùng at cho mọi tác vụ chỉ cần chạy một lần — khởi động lại dịch vụ, chạy script backup hay di dời dữ liệu vào khung giờ thấp tải. Một nguyên tắc mình luôn tuân thủ là sử dụng đường dẫn tuyệt đối cho mọi lệnh và file bên trong at, vì môi trường thực thi của nó không thừa hưởng alias hay biến môi trường từ shell hiện tại. Ưu điểm lớn nhất của at là tác vụ tự động được dọn dẹp sau khi hoàn thành, không để lại rác trong hệ thống.

    Các cú pháp thời gian linh hoạt của lệnh at

    Lệnh at hỗ trợ các cú pháp thời gian linh hoạt, giúp bạn lập lịch nhanh chóng trong các tình huống cụ thể:

    Trường hợp sử dụngCú pháp lệnhGiải thích logic
    Cuối tuần nàyat 17:00 FridayTác vụ chạy vào lúc 5 giờ chiều Thứ Sáu gần nhất.
    Sáng sớm maiat 03:00 tomorrowTác vụ chạy vào lúc 3 giờ sáng ngày tiếp theo.
    Sau 30 phútat now + 30 minutesHẹn giờ thực hiện bảo trì nhanh sau 30 phút nữa.
    Ngày cụ thểat 18:30 2026-01-01Lập lịch cho các sự kiện cụ thể trong tương lai xa.
    Kết hợp với Pipe(ls -l; df -h) | at 23:00Thực hiện chuỗi lệnh kiểm tra vào lúc 11 giờ đêm.

    Từ kinh nghiệm thực tế của mình, lệnh at không chỉ là một tiện ích mà là một nguyên tắc làm việc quan trọng của quản trị viên hệ thống. Đã không ít lần nó giúp mình thực hiện các tác vụ nhạy cảm như khởi động lại dịch vụ hoặc chạy một script di dời dữ liệu lớn vào lúc nửa đêm mà không cần phải thức.

    Bài học lớn nhất mình rút ra là luôn sử dụng đường dẫn tuyệt đối cho mọi lệnh và file, vì môi trường thực thi của at rất tối giản và không thừa hưởng cấu hình shell của bạn. Thói quen phân biệt rạch ròi: at cho tác vụ một lần, cron cho tác vụ định kỳ, đã giúp mình giữ cho crontab luôn sạch sẽ và ngăn ngừa những lỗi vận hành không đáng có do quên xóa một job tạm thời. Đây là một kỷ luật nhỏ nhưng mang lại sự ổn định lớn cho hệ thống.

    Lưu ý khi sử dụng lệnh at Linux

    Để đảm bảo các tác vụ được lập lịch hoạt động chính xác và không gây ảnh hưởng đến hệ thống, bạn cần ghi nhớ một số lưu ý quan trọng sau đây:

    • Trạng thái của dịch vụ nền: Lệnh at phụ thuộc hoàn toàn vào dịch vụ atd. Nếu dịch vụ này không hoạt động, các tác vụ bạn đã lên lịch sẽ không được thực thi. Vì vậy, bạn hãy luôn kiểm tra trạng thái dịch vụ bằng lệnh systemctl status atd.
    • Sử dụng đường dẫn tuyệt đối: Môi trường thực thi của lệnh at thường bị hạn chế về các biến đường dẫn ($PATH). Để tránh lỗi “command not found”, bạn nên sử dụng đường dẫn đầy đủ cho các câu lệnh và kịch bản.
    • Kiểm soát kết quả đầu ra: Do tác vụ chạy ngầm và không hiển thị trên màn hình Terminal, mọi thông báo hoặc lỗi sẽ được hệ thống gửi qua email nội bộ. Bạn nên sử dụng kỹ thuật chuyển hướng) để lưu kết quả vào một file log cụ thể nhằm thuận tiện cho việc kiểm tra.
    • Thời gian thực thi của hệ thống: Lệnh at căn cứ vào giờ hệ thống để khởi chạy tác vụ, do đó bạn cần đảm bảo múi giờ và thời gian hiện tại của máy chủ được cấu hình chính xác để tác vụ không bị thực hiện sai thời điểm.
    • Quản lý hàng đợi: Mọi tác vụ sau khi được lập lịch sẽ nằm trong hàng đợi cho đến khi đến giờ chạy. Bạn nên thường xuyên sử dụng lệnh atq để kiểm tra danh sách này nhằm tránh việc các tác vụ cũ hoặc lỗi vẫn còn tồn đọng trong hệ thống.
    Bạn nên sử dụng dường dẫn đầy đủ để tránh lỗi "command not found"
    Bạn nên sử dụng dường dẫn đầy đủ để tránh lỗi “command not found” (Nguồn: Internet)

    Từ kinh nghiệm của mình, có hai điều quan trọng cần nhớ thêm khi dùng lệnh at:

    1. Vấn đề về quyền: Không phải ai cũng dùng được at. Nếu bạn gặp lỗi về quyền, hãy kiểm tra hai file /etc/at.allow/etc/at.deny, vì chúng quyết định tài khoản nào được phép sử dụng lệnh này.
    2. Dùng script cho tác vụ phức tạp: Thay vì nhồi nhét nhiều lệnh phức tạp vào at, hãy tạo một file script (.sh) riêng. Bạn có thể kiểm tra và gỡ lỗi script đó trước, rồi chỉ cần dùng at để gọi file script. Cách này an toàn và dễ quản lý hơn rất nhiều.

    Câu hỏi thường gặp

    Làm thế nào để kiểm soát ai được phép sử dụng lệnh at trên hệ thống?

    Bạn có thể giới hạn quyền sử dụng lệnh này thông qua hai file cấu hình hệ thống:
    /etc/at.allow: Nếu file này tồn tại, chỉ những người dùng có tên trong danh sách mới được phép sử dụng lệnh at.
    – /etc/at.deny: Nếu file này tồn tại, tất cả người dùng có tên trong danh sách sẽ bị cấm sử dụng lệnh.
    Lưu ý: Nếu cả hai file đều không tồn tại, tùy vào cấu hình hệ thống, có thể chỉ tài khoản root mới có quyền truy cập.

    Tôi có thể xem lại nội dung chi tiết của một tác vụ đã được lên lịch không?

    Mặc dù lệnh atq chỉ cho biết thời gian và ID, bạn hoàn toàn có thể xem chi tiết các câu lệnh bên trong một Job bằng tùy chọn -c. Để kiểm tra nội dung của tác vụ có ID là 5, bạn hãy sử dụng lệnh:
    at -c 5

    Kết quả của lệnh sau khi thực hiện sẽ được lưu trữ ở đâu?

    Theo mặc định, nếu lệnh thực thi tạo ra các dòng thông báo hoặc kết quả xuất ra màn hình, hệ thống sẽ gửi một email nội bộ chứa nội dung đó cho người dùng đã tạo tác vụ. Để lưu kết quả vào một tập tin cụ thể thay vì nhận email, bạn nên sử dụng cú pháp chuyển hướng như sau:
    echo "sh /path/to/script.sh > /path/to/logfile.log 2>&1" | at 10:00 AM

    Làm sao để nhập nhiều lệnh liên tiếp mà không cần sử dụng file script?

    Ngoài cách sử dụng đường ống dẫn (pipe), bạn có thể khởi động chế độ nhập liệu tương tác bằng cách gõ lệnh at kèm theo thời gian, sau đó nhập từng dòng lệnh và kết thúc bằng tổ hợp phím Ctrl + D.
    Ví dụ để thực hiện chuỗi thao tác lúc 2 giờ chiều, bạn thực hiện lệnh sau:
    at 14:00
    at> cd /home/user/data
    at> tar -czf backup.tar.gz *
    at> [nhấn Ctrl + D]

    Sự khác biệt giữa lệnh at và crontab là gì?

    Sự khác biệt chính giữa lệnh at và crontab là
    – crontab: Chuyên dùng cho các tác vụ mang tính chu kỳ, lặp đi lặp lại, ví dụ nhưchạy mỗi ngày, mỗi tuần.
    at: Chuyên dùng cho các tác vụ chạy một lần duy nhất tại một thời điểm cụ thể trong tương lai, sau đó tự hủy.

    Lệnh at Linux là công cụ hữu ích mang lại sự linh hoạt và chính xác tuyệt đối cho các tác vụ không lặp lại, đặc biệt hiệu quả trong việc hẹn giờ bảo trì ngoài giờ làm việc. Việc làm chủ các cú pháp thời gian và quy tắc quản lý tác vụ sẽ giúp bạn tối ưu hóa quy trình quản trị, đảm bảo các công việc quan trọng được thực hiện đúng thời điểm chỉ một lần duy nhất.

    5/5 - (1 bình chọn)
    Nguyễn Hưng
    Tôi là Nguyễn Hưng hay còn được biết đến với nickname là Bo, chuyên gia về hệ thống, mạng và bảo mật. Tôi là Co-Founder của Vietnix và Co-Founder của dự án Chống Lừa Đảo.
    0 0 đánh giá
    Đánh giá bài viết
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận

    BÀI VIẾT LIÊN QUAN

    Cách sử dụng lệnh sysctl trong Linux để quản lý thông số Kernel
    Cách sử dụng lệnh sysctl trong Linux để quản lý thông số Kernel

    sysctl là một công cụ dòng lệnh cho phép quản trị viên xem và thay đổi các tham số Kernel của Linux ngay trong lúc hệ thống đang chạy, thông qua cây hệ thống file ảo /proc/sys. Khi sử dụng sysctl, bạn có thể giám sát, tinh chỉnh và tối ưu hiệu năng hệ thống…

    03/04/2026

    Hướng dẫn sử dụng crontab trong Linux để lập lịch tự động hóa tác vụ
    Hướng dẫn sử dụng crontab trong Linux để lập lịch tự động hóa tác vụ

    Crontab là một công cụ trên Linux dùng để lập lịch cho các tác vụ tự động chạy định kỳ như hàng phút, giờ, ngày, tuần, tháng,… mà không cần bạn thao tác thủ công. Công cụ này có thể tự động hóa các việc lặp lại như backup dữ liệu, xóa log cũ, chạy…

    03/04/2026

    Cách sử dụng lệnh modprobe trong Linux để quản lý Kernel Modules
    Cách sử dụng lệnh modprobe trong Linux để quản lý Kernel Modules

    modprobe là lệnh được sử dụng để thêm hoặc bớt các module ra khỏi Kernel một cách an toàn và thông minh nhờ khả năng tự động xử lý các mối quan hệ phụ thuộc. Trong bài viết này, mình sẽ hướng dẫn bạn cách sử dụng lệnh modprobe từ cơ bản đến nâng cao…

    03/04/2026

    Cách sử dụng lệnh lscpu trong Linux để kiểm tra chi tiết thông tin CPU
    Cách sử dụng lệnh lscpu trong Linux để kiểm tra chi tiết thông tin CPU

    Lệnh lscpu trong Linux dùng để hiển thị chi tiết thông tin về kiến trúc CPU trên hệ thống, như số CPU, số nhân, luồng, socket, NUMA node và thông tin bộ nhớ đệm. Trong bài viết này, mình sẽ hướng dẫn cách sử dụng lscpu để thu thập thông tin về số lượng nhân,…

    03/04/2026

    linux

    lenh

    text