Cách lên lịch tác vụ bằng lệnh at trên Linux

Chào mừng các bạn đến với bài hướng dẫn Office tiếp theo trong GOGOhalloween.  

Tự động hóa rất tốt, nhưng không phải ai cũng biết cách để tự động hóa các tác vụ. Tuy nhiên, việc có thể lên lịch tác vụ cho máy tính vào một thời điểm cụ thể cũng hay không kém. Vậy nên trong bài viết này, mình sẽ hướng dẫn các bạn cách lên lịch tác vụ bằng lệnh at trong Linux nhé.

Lệnh at là gì?

at là một lệnh Linux cho phép bạn lên lịch các công việc cho một ngày giờ cụ thể. Đó là tự động hóa được thực hiện dễ dàng từ Terminal.


Cách cài đặt

Trên Linux, lệnh at có thể đã được cài đặt mặc định. Bạn có thể xác minh nó đã được cài đặt hay chưa bằng lệnh at -V:

$ at -V
at version x.y.z

Nếu bạn không tìm thấy lệnh at, hầu hết các bản phân phối Linux hiện đại đều cung cấp gói cài đặt lệnh at cho bạn.

Bạn cũng có thể cần khởi động at daemon, được gọi là atd. Trên hầu hết các hệ thống Linux, bạn sử dụng lệnh systemctl để kích hoạt các dịch vụ và cho phép chúng tự động khởi động từ bây giờ trở đi:

$ sudo systemctl enable --now atd

Cách lên lịch tác vụ tương tác với lệnh at

Trước tiên, bạn cần tạo một sự kiện vào thời điểm nào đó và sau đó bạn chỉ định những gì bạn muốn xảy ra.


Ví dụ: hãy thử lên lịch bằng cách tạo một nhiệm vụ trong vài phút tới. Chỉ cần làm một cái nhiệm vụ đơn giản thôi. Để thoát khỏi terminal, hãy nhấn Ctrl + D trên bàn phím của bạn.


$ at 11:20 AM
warning: commands will be executed using /bin/sh
at> echo "hello world" > ~/at-test.txt
at> <EOT>
job 3 at Mon Jul 26 11:20:00 2021

Như bạn có thể thấy, at sử dụng các định nghĩa thời gian trực quan và tự nhiên. Bạn không cần biết hết 24 giờ hoặc chuyển sang UTC. Nói chung, bạn có thể sử dụng bất kỳ ký hiệu thời gian nào chẳng hạn như noon, 1:30 PM13:37,… để mô tả thời điểm bạn muốn.

Chờ một vài phút và sau đó xem chữ “hello world” đã được ghi vào file at-text.txt hay chưa bằng lệnh cat.


$ cat ~/at-test.txt
hello world

Cách lên lịch tác vụ với lệnh at

Bạn không cần phải viết tác vũ trên terminal để lên lịch công việc với at. Thay vào đó, bạn có thể sử dụng lệnh echo hoặc printf. Trong ví dụ này, mình sẽ sử dụng now để trì hoãn tác vụ đó trong 1 phút.

$ echo "echo 'hello again' >> ~/at-test.txt" | at now +1 minute

Sau một phút, bạn cần xác nhận tác vụ đã được hoàn thành bằng lệnh cat.

$ cat ~/at-test.txt
hello world
hello again

Các tùy chọn thời gian

Lệnh at khá dễ thao tác với các tùy chọn thời gian. Bạn có thể chọn giữa nhiều định dạng, tùy thuộc vào định dạng nào thuận tiện nhất cho bạn:

  • YYMMDDhhmm[.ss]  (viết tắt của năm, tháng, ngày, giờ, phút và giây)
  • CCYYMMDDhhmm[.ss] (đầy đủ năm, tháng, ngày, giờ, phút và giây)
  • now
  • midnight
  • noon
  • teatime (4 PM)
  • AM
  • PM

Thời gian và ngày tháng có thể là tuyệt đối hoặc thêm dấu cộng (+) để làm cho chúng tương đối so với bây giờ.


  • minutes
  • hours
  • days
  • weeks
  • months
  • years

Cú pháp ngày và giờ

Lệnh at ít thoải mái hơn khi thao tác với ngày giờ. Phải ghi thời gian trước, sau đó là ngày, mặc dù ngày đó được mặc định là ngày hiện tại và chỉ được lên lịch tác vụ cho một ngày nào đó trong tương lai.

Ví dụ:

$ echo "rsync -av /home/tux me@myserver:/home/tux/" | at 3:30 AM tomorrow
$ echo "/opt/batch.sh ~/Pictures" | at 3:30 AM 08/01/2022
$ echo "echo hello" | at now + 3 days

Xem hàng đợi tác vụ

Bạn có thể xem các công việc mình đã lên lịch trên Linux bằng lệnh atq:

$ atq
10 Thu Jul 29 12:19:00 2021 a tux
9  Tue Jul 27 03:30:00 2021 a tux
7  Tue Jul 27 00:00:00 2021 a tux

Để xóa một công việc khỏi hàng đợi, hãy sử dụng lệnh atrm. Để loại bỏ công việc số 7:

$ atrm 7
$ atq
10 Thu Jul 29 12:19:00 2021 a tux
9  Tue Jul 27 03:30:00 2021 a tux

Ngoài ra, bạn cũng có thể xem thêm 10 lệnh Linux nguy hiểm bạn tuyệt đối không nên thử tại đây.

Dưới đây là đường link video hướng dẫn cụ thể chi tiết từng phần mà chúng tôi đã bỏ thời gian ra làm và quay lại. Bạn hãy tải xuống và thực hiện như chúng tôi nhé!

📥 DOWNLOAD NOW

Related Posts

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *