(91) 350-9520 support@omarine.org M-F: 7 AM - 7 PM; Weekends: 9 AM - 5 PM

Lên lịch công việc với KCron

Trên nền Plasma có chương trình KCron dùng để lập kế hoạch những tác vụ cần thực hiện tự động vào thời điểm nhất định. Những tác vụ cần thiết có thể là sao dự phòng dữ liệu, xoay vòng nhật ký, thông báo cập nhật hệ thống hay bất kỳ công việc nào khác do người dùng sắp xếp. Chẳng hạn nếu bạn lập kế hoạch sao dự phòng vào 2 giờ sáng hàng ngày thì bạn cứ yên tâm đi ngủ, máy tính sẽ làm việc đó cho bạn.

Để lên lịch công việc với KCron, bạn mở menu System Settings

Bạn chọn mục Startup and Shutdown, rồi chọn Task Scheduler trong cửa sổ tiếp theo, sau đó nhấn chuột trái vào New Task. Cửa sổ New Task – System Settings sẽ xuất hiện như sau

Chọn thời gian về tháng, ngày trong tháng, giờ, ngày của tuần, phút sử dụng giao diện đồ họa như trên là rất đơn giản. Duy chỉ có mục Command (lệnh) cần được giải thích thêm. Lệnh cần nhập vào là một lệnh shell có giá trị (yêu cầu là shell Bourne nhưng bash đang được dùng phổ biến cũng tương thích với Bourne), hoặc nó là một chương trình kịch bản.

Để thử, bạn gõ vào dòng lệnh /bin/date >> date.txt, và chọn thời gian thực hiện là theo từng phút như hình dưới đây:

Khi công việc này được áp dụng thì dữ liệu thời gian của lệnh date sẽ được ghi vào tệp date.txt trong thư mục nhà theo từng dòng ứng với từng phút.

Nếu trong lệnh không có chuyển hướng dữ liệu ra tệp (chỉ còn là /bin/date), thì dữ liệu sẽ được mail tới người sử dụng.

crond và crontab

Chúng ta biết rằng Plasma chỉ ở trên ngọn của hệ thống nên KCron sẽ chẳng có tác dụng gì nếu không có gói dcron được cài đặt và các chương trình crond và crontab chạy bên dưới.

Crontab là chương trình thao tác crontab (bảng công việc) cho mỗi người sử dụng. Bảng công việc của root nằm trong tệp /var/spool/cron/crontabs/root. Lệnh crontab -e được dùng để soạn thảo crontab của bạn, còn lệnh sudo crontab -e soạn thảo crontab cho root.

Bảng công việc bao gồm các công việc, mỗi công việc là một bản ghi gồm 6 trường:

  1. Phút: từ 0 đến 59

  2. Giờ: từ 0 đến 23

  3. Ngày trong tháng: từ 1 đến 31
  4. Tháng: từ 1 đến 12, hoặc dùng chữ như jan, feb, …

  5. Ngày của tuần: từ 0 đến 6 (0 là chủ nhật), hoặc dùng chữ như mon, tue, …

  6. Lệnh

crond là một daemon chạy trong background làm nhiệm vụ phân tích cú pháp của bảng công việc và thực hiện lệnh thích hợp.

Trong ví dụ trên, khi kế hoạch từ công cụ KCron được áp dụng, công việc sẽ được tạo ra một cách gián tiếp, có nội dung sau:

* * * * * /bin/date >> date.txt


Dấu * có nghĩa là giá trị nào cũng được, như vậy lệnh được thực hiện theo từng phút.
Nếu chúng ta thay đổi trường thứ nhất thành */2 và trường thứ hai thành 6,8

*/2 6,8 * * * /bin/date >> date.txt

thì lệnh được thực hiện lúc 6h và 8h, trong những giờ này cứ 2 phút lệnh được thực hiện 1 lần. Còn nhiều quy tắc thú vị khác.

Có thể nhận xét rằng, việc sử dụng chuột để chọn các yếu tố thời gian trong giao diện đồ họa của KCron là động tác thủ công bằng tay, còn soạn thảo trực tiếp crontab với các kí hiệu theo quy tắc là áp dụng hàng loạt mang tính tự động.

Chúng ta lại có thể nhận định rõ ràng: KCron thông thường là một công cụ với giao diện đồ họa thuận tiện cho người dùng (là điều dễ thấy), nhưng nó không tận dụng được năng lực điện toán vốn có của hệ thống tính toán đối với các yêu cầu phức tạp và mềm dẻo (là cái khó thấy hơn).

Một ví dụ khác về năng lực điện toán

Giả sử chúng ta có 1000 file và thư mục con trong thư mục test của thư mục nhà như hình dưới đây (1000 không phải là số lượng quá lớn, thư mục hệ thống /usr/bin có khoảng 3000 file):

Các file và thư mục nằm xen kẽ nhau. Nếu chúng ta dùng chuột để chọn với mục đích là chỉ xóa các file thì mất rất nhiều thời gian.

Việc này có thể được thực hiện bằng một dòng lệnh như sau, cho rằng chúng ta đang ở thư mục test:

for file in *; do if [ -f $file ]; then rm $file; fi; done

Nếu muốn xóa cả các file trong các thư mục con thì bạn dùng lệnh này:

find . ! -type d -exec rm {} \;

Advertisements

Gửi phản hồi

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.

%d bloggers like this: