Cách lên lịch các lệnh trong Linux với "at"

Nếu phải quản lý một máy chủ “bận rộn”, phải chờ một thời điểm thích hợp để khởi động lại server (tức là khi mọi người không sử dụng nó). Thời điểm thích hợp này có lẽ là vào lúc rạng sáng. Nhưng điều này thật bất tiện! Quản trị viên phải thức dậy thật sớm chỉ để khởi động lại máy chủ của mình ư? Với Linux, việc tự động hóa một nhiệm vụ đơn giản như vậy rất dễ dàng với tiện ích “at”.

Tiện ích này rất dễ sử dụng. Người dùng chỉ cần đưa thời gian và ngày tháng dưới dạng tham số dòng lệnh, sau đó nhập một hoặc nhiều lệnh muốn at thực thi.

Trên một máy chủ, rất hữu ích khi có một chương trình như vậy bởi vì người dùng thường muốn máy chủ thực hiện các hành động, không cần giám sát. Nhưng ngay cả trên máy tính để bàn, at cũng có thể là một công cụ rất thuận tiện. Ví dụ, giả sử bạn tải xuống một file rất lớn. Bạn có thể lên lịch cho PC của mình tắt vào đêm khuya. Ngoài ra, người dùng còn có thể yêu cầu at nhắc nhở mình về những điều cần làm. Khá nhiều hành động có thể được lên lịch với các công cụ và tùy chọn dòng lệnh phù hợp.

Cách cài đặt at trên các bản phân phối Linux khác nhau

Trên Debian hoặc các bản phân phối dựa trên Debian, hãy chạy:

sudo apt install at

Cài at trên Debian

Trên Fedora, hãy chạy:

sudo dnf install at

Để cài đặt at trên Arch Linux, hãy nhập lệnh:

sudo pacman -S at

Và, trên openSUSE, hãy nhập lệnh:

sudo zypper install at

Kích hoạt tính năng tự động khởi động của daemon at

Một số bản phân phối sẽ tự động kích hoạt tính năng khởi động của daemon at khi boot. Nhưng một số bản phân phối khác thì không. Hãy kiểm tra với:

systemctl is-enabled atd.service

Kích hoạt tính năng tự động khởi động

Nếu kết quả là “disabled”, thì hãy kích hoạt nó với:

sudo systemctl enable atd.service

Và bắt đầu daemon:

sudo systemctl start atd.service

Cách chỉ định ngày và thời gian để lên lịch cho các lệnh at

Người dùng có thể sử dụng một trong các hình thức sau đây.

1. Chạy lệnh sau số phút, giờ, ngày hoặc tuần được chỉ định.

at now + 10 minutes
 at now + 10 hours
 at now + 10 days
 at now + 10 weeks

Chạy lệnh sau số phút quy định

2. Chạy vào một thời điểm chính xác:

at 23:10

Nếu bây giờ là 12:00, và bạn chạy:

at 11:00

Thì lệnh sẽ chạy vào ngày mai, tại thời điểm được chỉ định.

3. Chạy vào thời gian và ngày được chỉ định chính xác:

at 12:00 December 31

Các cách khác để xác định thời gian và ngày tháng có thể được tìm thấy trong hướng dẫn sử dụng tiện ích at trực tuyến. (link tham khảo: https://linux.die.net/man/1/at)

Cách sử dụng lệnh at

Như bạn đọc có thể thấy, sau khi chỉ định thời gian được lên lịch, một dấu nhắc lệnh giống như hình ảnh sau sẽ xuất hiện:

Cách sử dụng lệnh at

Tại đây, người dùng chỉ cần nhập các lệnh muốn chạy. Chúng sẽ được thực thi dưới tên user hiện tại. Nhập lệnh muốn chạy tại một thời điểm được chỉ định và nhấn Enter. Nếu muốn chạy một lệnh tiếp theo, lặp lại quy trình tương tự. Khi thực hiện xong, nhấn Ctrl + D. <EOT> sẽ được hiển thị khi nhấn các phím đó, theo sau là thời gian (các) lệnh sẽ được thực thi.

Nếu muốn chạy các lệnh yêu cầu quyền root, đừng sử dụng sudo. Hãy nhớ rằng, lệnh sẽ chạy mà không cần giám sát, vì vậy sudo sẽ không hoạt động bởi vì không có ai nhập mật khẩu. Thay vào đó, trước tiên hãy đăng nhập với tư cách user root:

sudo -i

Và sau đó sử dụng lệnh at như bình thường. Bây giờ, tất cả các lệnh sẽ được thực thi với quyền root, thay vì user thông thường.

Sau khi lên lịch lệnh, hãy nhập:

exit

Lệnh này sẽ đăng xuất bạn từ tài khoản user root.

Đăng xuất khỏi tài khoản root

Ở ví dụ trong ảnh chụp màn hình này, việc tắt máy đã được lên lịch trong hai phút. Người dùng có thể điều chỉnh sao cho phù hợp với nhu cầu riêng của mình.

Nếu máy tính bị tắt trước khi một công việc được lên lịch có cơ hội chạy, nhiệm vụ đó sẽ chạy ở lần khởi động tiếp theo (nếu thời gian được đặt cho nó đã qua). Ví dụ, nếu lên lịch công việc vào lúc 3 giờ chiều, tắt máy lúc 2 giờ chiều và bật nguồn lúc 4 giờ chiều, công việc sẽ chạy vào lúc 4 giờ chiều.

Xem và/hoặc xóa các công việc theo lịch trình

Người dùng có thể xem các công việc được xếp theo thứ tự với lệnh:

atq

Hoặc lệnh:

at -l

Xem các công việc được lên lịch

Để xem những lệnh nào được lên lịch trong một công việc, hãy sử dụng số tiền tố của công việc đó.

at -c 22

Sử dụng tiền tố

Các dòng đầu ra cuối cùng sẽ hiển thị cho người dùng các lệnh đã lên lịch.

Để xóa một công việc, sử dụng số tiền tố của nó như sau:

atrm 22

Lên lịch at để chạy các ứng dụng đồ họa

Đầu tiên, tìm ra giá trị biến hiển thị hiện tại:

echo $DISPLAY

Thông thường, nó sẽ là :0.

Hãy lên lịch để chạy at. Trong dấu nhắc của at, hãy đặt biến DISPLAY thành giá trị trước đó (export DISPLAY=:0) và chạy ứng dụng đồ họa mong muốn.

Đặt biến DISPLAY thành giá trị trước đó

Các lệnh được sử dụng trong ảnh chụp màn hình trước đó sẽ dẫn đến kết quả như sau.

Kết quả

Bây giờ, ứng dụng đồ họa sẽ nhắc nhở người dùng về một công việc quan trọng tốt hơn báo thức điện thoại.

Sử dụng at rất dễ dàng. Phần khó hơn là tìm ra một cách sáng tạo để thực hiện một hành động mà bạn mong muốn. Nhưng bạn có thể làm bất cứ điều gì mình muốn, như bắt đầu tải xuống, đóng chương trình, đặt máy tính ở chế độ chờ, v.v…

Chúc bạn thực hiện thành công!

Thứ Ba, 12/03/2019 14:45
52 👨 152