Ví dụ về lệnh at trên Centos / Ubuntu / Debian / Fedora

Là một phương án thay thế cho trình lập lịch cron, lệnh at cho phép bạn lên lịch chạy một lệnh một lần vào một thời gian cụ thể mà không cần chỉnh sửa tệp cấu hình. Yêu cầu duy nhất là cài đặt tiện ích này và bắt đầu kích hoạt việc thực thi của nó.

# yum install at              [on CentOS based systems]
$ sudo apt-get install at     [on Debian and derivatives]

Để bắt đầu và kích hoạt dịch vụ at khi khởi động hệ thống, bạn cần làm theo các bước sau:

--------- On SystemD ---------
# systemctl start atd
# systemctl enable atd

--------- On SysVinit ---------
# service atd start
# chkconfig --level 35 atd on

Khi dịch vụ "atd" đang chạy, bạn có thể lên lịch bất kỳ lệnh hoặc tác vụ nào như sau. Chúng ta muốn gửi 4 lệnh ping tới www.google.com khi phút tiếp theo bắt đầu (ví dụ: nếu là 22:20:13, lệnh sẽ được thực thi vào 22:21:00) và báo cáo kết quả qua email (-m, yêu cầu có Postfix hoặc tương đương) đến người dùng gọi lệnh:

# echo "ping -c 4 www.google.com" | at -m now + 1 minute

Nếu bạn không sử dụng tùy chọn -m, lệnh sẽ được thực thi nhưng không có gì được in ra đầu ra chuẩn (standard output). Tuy nhiên, bạn có thể chọn chuyển hướng đầu ra vào một tệp tin thay vì in ra màn hình.

Ngoài ra, xin lưu ý rằng lệnh at không chỉ cho phép các thời gian cố định sau: now (hiện tại), noon (12:00 trưa) và midnight (00:00), mà còn cho phép sử dụng các thời gian tùy chỉnh gồm 2 chữ số (đại diện cho giờ) và 4 chữ số (giờ và phút).

Ví dụ: để chạy lệnh updatedb lúc 11 giờ tối hôm nay (hoặc ngày mai nếu ngày hiện tại lớn hơn 11 giờ tối), bạn có thể thực hiện như sau:

# echo "updatedb" | at -m 23

Để tắt hệ thống lúc 23:55 hôm nay (điều kiện tương tự như ví dụ trước), bạn có thể thực hiện như sau:

# echo "shutdown -h now" | at -m 23:55

Bạn cũng có thể trì hoãn thực thi theo phút, giờ, ngày, tuần, tháng hoặc năm bằng cách sử dụng dấu + và chỉ định thời gian mong muốn như ví dụ đầu tiên. Các chỉ định thời gian phải tuân theo tiêu chuẩn POSIX.

Như một nguyên tắc, hãy sử dụng lệnh at thay vì lập lịch cron khi bạn muốn chạy một lệnh hoặc thực hiện một tác vụ cụ thể vào một thời gian xác định chỉ một lần. Đối với các kịch bản khác, hãy sử dụng cron.