[Linux] Tìm hiểu sử dụng chương trình lệnh “at”, “atq”, “atrm”, “batch” trên Linux

Tìm hiểu sử dụng chương trình lệnh at, atq, atrm, batch trên Linux


Chúng ta sẽ tìm hiểu qua cách sử dụng của các chương trình lệnh at, atq, atrm, batch trên Linux nhằm thiết lập lịch thực thi tiến trình theo thời gian cụ thể.

Trong khi “cron” được sử dụng để thiết lập các nhiệm vụ thực thi định kì trên hệ thống. Thì chương trình “at” chỉ sử dụng để lên lịch cho 1 hoặc nhiều chương trình lệnh khác thực thi vào 1 thời điểm cụ thể 1 lần duy nhất, như một nội dung nhắc nhở đơn giản hoặc một script phức tạp.

Còn “batch” dùng để lên lịch thực thi nhiệm vụ khi mà hệ load hệ thống rớt xuống dưới 0.8, như vậy “batch” cũng hoạt động giống “at” nhưng có điều kiện kích hoạt là load hệ thống dưới mức quy định.

Để sử dụng được “at” và “batch“, thì 2 phần mềm này cần được cài đặt trên hệ thống. Sau đó phải đảm bảo dịch vụ “atd” phải được chạy. Nếu không chương trình sẽ không chạy theo lịch, tức danh sách lịch thực thi đã có nhưng không có dịch vụ atd kiểm tra thời gian để thực thi.

# rpm -q at
at-3.1.10-48.el6.x86_64
# service atd start
Starting atd: [ OK ]


1. Thiết lập lịch thực thi chương trình

Cấu trúc lệnh

# at time date
at>


Vd 1
: thiết lập lịch vào thời điểm ngày 20/5 lúc 11 giờ sáng.

# at 11 am may 20
at>


Vd 2
: thiết lập thời gian vào lúc 4 giờ chiều sau ngày hôm nay 3 ngày.

# at 4pm + 3 days
at>

– Sau khi bạn thiết lập thời gian sẽ được chuyển vào giao diện console khác để chỉ định các danh sách chương trình lệnh thực thi.
– Để thoát khỏi console “at” bạn bấm nút CTRL+D, chương trình lệnh sẽ được thêm vào hàng đợi.
– Output của chương trình thực thi trong hàng đợi “at” sẽ được gửi mail đến bạn, mặc định là gửi mail local.


2. Thiết lập lịch với thời gian tương đối

– Bạn có thể thiết lập thời gian với việc cộng thêm thời gian với thời điểm hiện tại.
Cấu trúc lệnh

# at now + COUNT UNIT


Vd
: thiết lập lịch sẽ thực thi 5 phút sau thời điểm hiện tại

# at now + 5 min


– Các “UNIT” bạn có thể sử dụng gồm : min, hour, day

– Nếu bạn sử dụng sai cấu trúc lệnh sẽ gặp thông báo lỗi sau :

# at now + 5 seconds
syntax error. Last token seen: s
Garbled time


3. Một số mẫu thời gian sử dụng trong at

– Một số mẫu thời gian thường sử dụng khi thiết lập thời gian cho chương trình “at” thực thi lệnh.

# at 10 am tomorrow
# at 11:00 next month
# at 22:00 today
# at now + 1 week
# at noon


– Một số từ ngữ thời gian thông dụng và diễn giải. Một số thời gian 10:00 phía dưới ví dụ là do tính từ thời điểm hiện tại đang cấu hình thời gian “at” là 10:00 AM.

midnight = 12:00 AM
noon = 12:00 PM
teatime = 4:00 PM
tomorrow = 10:00 AM hôm sau
1430 = 2:30 PM
next week = 10:00 AM tuần sau


4. Xem dánh sách các công việc nằm trong hàng đợi thực thi của chương trình “at”

– Ta sẽ sử dụng chương trình lệnh “atq” hoặc “at -l” để hiển thị tất cả các nội dung chương trình lệnh đang được sắp lịch hoặc đang thực thi. Thực chất “atq” chỉ là alias của “at -l“.

# at -l
2 2016-03-27 14:19 a root
1 2016-03-27 14:15 a root
# atq
2 2016-03-27 14:19 a root
1 2016-03-27 14:15 a root

– Với nội dung danh sách chương trình thực thi trên thì cấu trúc để hiểu danh sách đó như sau. Từ trái qua phải : số thứ tự nhiệm vụ, thời gian sẽ thực thi (ngày/tháng/năm & thời gian), hàng đợi do chương trình “at” tạo (nếu là “b” thì do chương trình “batch” tạo) và tên user sẽ thực thi chương trình.

Lưu ý:
– atq chỉ có thể liệt kê danh sách chương trình thực thi bởi “at” của user chạy lệnh “atq”, không thể liệt kê các chương trình lệnh sẽ chạy khác của các user khác, ngoài trừ user tối cao root.


5. Xoá bỏ 1 nội dung chương trình nằm trong danh sách thời gian thực thi của “at”

– Bạn có thể dùng chương trình lệnh “atrm” hoặc “at -d” để làm cùng 1 nhiệm vụ đó là xoá bỏ 1 nhiệm vụ thực thi khỏi danh sách hàng đợi của “at”.
– Giả sử để xoá bỏ nhiệm vụ thực thi số 2, thì sẽ làm theo cú pháp sau.

# atrm 4

hoặc

# at -d 4


6. Thực thi các chương trình lệnh nằm trong 1 file list

– Chúng ta hoàn toàn có thể tạo 1 file text trong đó chứa các chương trình lệnh hoặc nội dung một shell script nào đấy mà bạn muốn chúng sẽ được thực thi chạy nền bằng chương trình “at“.
– Bằng cách sử dụng option hỗ trợ “-f” , ta sẽ yêu cầu “at” sử dụng thông tin chương trình thực thi được lấy từ 1 file text thay vì stdin.

# cat /root/chuongtrinh.txt
/home/cuongqc/testing.sh
/bin/date -I
# at -f /root/chuongtrinh.txt now + 1 hour
at


7. Kiểm soát user nào được quyền sử dụng chương trình “at”

– Người quản trị viên có thể kiểm soát user nào có thể đặt lịch thực thi chương trình bằng “at” hoặc không được phép.
– Đầu tiên, chương trình sẽ kiểm tra file “/etc/at.allow” . Nếu file /etc/at.allow tồn tại, thì chỉ có user được liệt kê trong file này mới được phép sử dụng chương trình “at”.
– Kế đến nếu file “/etc/at.allow” không tồn tại, chương trình sẽ kiểm tra file /etc/at.deny . Nếu file này tồn tại, user nào được liệt kê trong file này sẽ không có quyền thực thi chương trình “at”.
– Mặc định một số hệ thống thường sử dụng chương trình sử dụng file /etc/at.deny để ngăn 1 số user không được phép xài “at” như user : www-data, guest, backup,…

8. Các file và thư mục được sử dụng bởi chương trình “at”

– Các file được chương trình “at” sử dụng tương tác trong quá trình hoạt động.

/var/spool/at
/var/spool/at/spool
/proc/loadavg
/var/run/utmp
/etc/at.allow
/etc/at.deny


Như vậy chúng ta đã tìm hiểu xong phần sử dụng chương trình at, atq, atrm và batch trên Linux.

Previous article[Linux] Fix lỗi “There are unfinished transactions remaining” khi cài đặt chương trình bằng yum
Next article[PHP] Fix lỗi PHP Fatal Error: Allowed Memory Size Exhausted
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !