1. Lên lịch thực hiện tác vụ một lần bằng at
1.1 Quản lý dịch vụ và kiểm soát truy cập tại
Để thực thi đúng cách, lệnh at cần có sự hỗ trợ của dịch vụ atd. Dịch vụ atd hoạt động độc lập
[root@linux-server ~]# systemctl status atd
Chỉ khi dịch vụ atd đã khởi động, lệnh at mới có thể hoạt động bình thường. Việc kiểm soát truy cập của at, tức là cho phép hoặc không cho phép người dùng nào sử dụng lệnh at để đặt tác vụ định thời, có thể được xem như việc thiết lập danh sách trắng hoặc danh sách đen. Cơ chế kiểm soát truy cập của at dựa trên hai tệp: /etc/at.allow (danh sách trắng) và /etc/at.deny (danh sách đen), với các quy tắc cụ thể:
Nếu hệ thống có tệp /etc/at.allow, chỉ những người dùng được liệt kê trong tệp này mới có thể sử dụng lệnh at. Các người dùng khác không được sử dụng (tệp /etc/at.deny sẽ bị bỏ qua, nghĩa là nếu một người dùng có mặt trong cả hai tệp, họ vẫn có thể sử dụng lệnh at vì /etc.at.allow có ưu tiên cao hơn).
Nếu hệ thống không có tệp /etc/at.allow mà chỉ có tệp /etc/at.deny, những người dùng được liệt kê trong tệp này không được sử dụng lệnh at, nhưng các người dùng khác có thể. Tuy nhiên, quy tắc này không áp dụng cho tài khoản root.
Nếu cả hai tệp này đều không tồn tại trong hệ thống, chỉ có tài khoản root mới có thể sử dụng lệnh at.
Theo mặc định, hệ thống chỉ có tệp /etc/at.deny và tệp này rỗng, do đó tất cả người dùng trong hệ thống đều có thể sử dụng lệnh at. Tuy nhiên, nếu chúng ta muốn kiểm soát quyền sử dụng lệnh at của người dùng, chỉ cần thêm tên người dùng vào tệp /etc/at.deny.
Tệp /etc/at.allow có ưu tiên cao hơn. Nếu tệp /etc/at.allow tồn tại, tệp /etc/at.deny sẽ bị vô hiệu hóa. Việc quản lý bằng /etc/at.allow nghiêm ngặt hơn vì chỉ những người dùng được liệt kê mới có thể sử dụng lệnh at. Nếu cần nhiều người dùng bị vô hiệu hóa, có thể thêm một số ít người dùng vào tệp này. Ngược lại, việc quản lý bằng /etc/at.deny linh hoạt hơn - nếu nhiều người dùng được phép sử dụng lệnh at, chỉ cần thêm những người dùng bị cấm vào tệp. Tuy nhiên, cả hai tệp này đều không có hiệu lực với tài khoản root.
1.2 Lệnh at
[root@linux-server ~]# at [tùy_chọn] thời_gian
tùy_chọn:
-m:Khi tác vụ at hoàn thành, bất kể lệnh có đầu ra hay không, sẽ gửi email thông báo cho người dùng đã thực thi lệnh at
-c mã_tác_vụ:Hiển thị nội dung thực tế của tác vụ at
thời_gian:
at hỗ trợ các định dạng thời gian sau:
HH:MM Thực thi lệnh tại "giờ:phút" được chỉ định, ví dụ: 01:10
HH:MM YYYY-MM-DD Thực thi tại "giờ:phút năm-tháng-ngày" được chỉ định, ví dụ: 01:10 2023-08-08
HH:MM[sáng|chiều] [tháng] [ngày] Thực thi tại "giờ:phút[sáng|chiều] [tháng] [ngày]" được chỉ định, ví dụ 01:10 Tháng 7 25
HH:MM[sáng|chiều] [phút|giờ|ngày|tuần] Thực thi sau "thời gian chỉ định nữa", ví dụ now + 5 phút, 5sáng + 2 giờ
Ví dụ
[root@linux-server ~]# chào.sh
#!/bin/bash
echo "xin chào thế giới"
[root@linux-server ~]# at now +1 phút
at> /root/chào.sh >> chào.log
at> <EOT> Sử dụng Ctrl+d để lưu tác vụ at
job 1 at Tư Tháng 11 17:44:00 2023 Đây là tác vụ at đầu tiên
[root@linux-server ~]# cat chào.log
xin chào thế giới
1.3 Các lệnh quản lý at khác
at còn có các lệnh để truy vấn và xóa
[root@linux-server ~]# atq
#Truy vấn các tác vụ at đang có trên máy chủ
[root@linux-server ~]# atq
2 Tư Tháng 11 17:55:00 2023 a root
[root@linux-server ~]# atrm [mã_tác_vụ]
#Xóa tác vụ at được chỉ định
[root@linux-server ~]# atrm 2
[root@linux-server ~]# atq
#Sau khi xóa tác vụ at số 2, khi truy vấn lại sẽ không còn tác vụ at nào