Cách khởi chạy Cron tự động trong WSL trên Windows 10 và 11

0
15
A hand holding a stopwatch.

Cách khởi chạy Cron tự động trong WSL trên Windows 10 và 11

A hand holding a stopwatch.
Tỷ ảnh /Shutterstock.com

Windows có một số cách để tự động hóa các tác vụ. Công cụ phổ biến nhất là Windows Task Scheduler, nhưng nếu bạn đang sử dụng Hệ thống con Windows cho Linux (WSL), cũng có daemon cron chạy các tác vụ trong nền cho cài đặt WSL của bạn.

Cron không chạy theo mặc định

Trên Windows 10 và Windows 11, cron đi kèm với môi trường Linux như Ubuntu. Vấn đề là WSL không tự động khởi động cron, có nghĩa là các tác vụ tự động của bạn không được thực hiện theo mặc định.

Để khắc phục điều này, bạn có thể khởi động cron thủ công mỗi khi mở dòng lệnh, nhưng khởi động thủ công một công cụ được cho là tự động hóa các tác vụ là loại thiếu điểm.

May mắn thay, có một cách dễ dàng để khắc phục điều này và nó đòi hỏi phải sử dụng Bộ lập lịch tác vụ.

A Windows WSL terminal window showing that cron is not running.

Nếu bạn chưa bao giờ sử dụng cron trong Linux để chạy các tác vụ, hãy xem hướng dẫn trước đây của chúng tôi về cách lên lịch các tác vụ trên Linux. Đối với mục đích của chúng tôi ở đây, chúng tôi sẽ giả định rằng bạn đã tạo ra một số công việc cron trong cài đặt WSL của mình và bạn cần giúp đỡ để đảm bảo rằng chúng chạy thay vì giữ trẻ bạn bè mọi lúc.

Đối với hướng dẫn này, chúng tôi sẽ sử dụng sudo service để kiểm tra và bắt đầu cron, đó là cách được đề xuất để dừng và bắt đầu các dịch vụ trên các bản dựng Ubuntu hiện đại – phân phối phổ biến nhất cho WSL.

Ngoài ra, lưu ý rằng hướng dẫn này giả định rằng bạn có quyền quản trị viên trên phiên bản WSL của mình. Nếu bạn là người dùng duy nhất của PC và bạn tự bật WSL, thì bạn có quyền quản trị viên.

Mẹo: Điều này cũng hoạt động trong Hệ thống con Windows cho Linux trên Windows 11 , không chỉ trên Windows 10.

Cách lên lịch tác vụ trên Linux: Giới thiệu về tệp Crontab

Chuẩn bị Linux

Điều đầu tiên chúng ta phải làm là cho phép máy tính khởi động cron mà không cần mật khẩu. Khi bạn bắt đầu một dịch vụ như cron, bạn sử dụng lệnh sudo service cron start . Nhưng lệnh đó yêu cầu mật khẩu, mà Windows sẽ không có quyền truy cập khi nó khởi động. Cách xung quanh điều này là tắt yêu cầu mật khẩu cho lệnh này.

Để làm điều đó, hãy mở cửa sổ đầu cuối WSL của bạn và nhập sudo visudo . Nhấn Enter trên bàn phím của bạn, nhập mật khẩu Linux của bạn và nhấn phím Enter một lần nữa. Nếu bạn đang sử dụng Ubuntu, điều này sẽ mở tệp “sudoers” bằng cách sử dụng trình soạn thảo văn bản dòng lệnh Nano thân thiện với người mới bắt đầu. Sudoers là một tập tin dành cho các quản trị viên hệ thống có thể thay đổi đặc quyền và quyền truy cập cho người dùng.

Thêm lệnh sau vào cuối tệp sudoers, rồi nhấn Ctrl+o để lưu và Ctrl+x để thoát tệp.

%sudo ALL=NOPASSWD: /usr/sbin/service cron start

Lệnh sudoers này nói rằng bất kỳ người dùng nào có đủ đặc quyền để sử dụng lệnh sudo (bao gồm cả bạn) đều không yêu cầu mật khẩu để chạy lệnh sudo service cron start , bắt đầu daemon cron.

Sau khi bạn đã lưu tệp, bạn có thể kiểm tra xem lệnh có đang thực hiện công việc của nó hay không bằng cách gõ sudo service cron start và nó sẽ bắt đầu cron mà không cần yêu cầu mật khẩu. Nếu điều đó có hiệu quả, chúng ta hãy tắt cron một lần nữa để chúng ta có thể kiểm tra xem nhiệm vụ chúng ta đang tạo trong bước tiếp theo hoạt động đúng hay không. Để làm điều đó, xin vui lòng sudo service cron stop chạy.

Thiết lập Cron trong Bộ lập lịch Tác vụ Windows

Đó là giai đoạn một trong hành trình của chúng tôi hướng tới tự động hóa cron. Chúng ta hãy chuyển sang phần 2 với Bộ lập lịch nhiệm vụ. Gõ nhẹ vào phím Windows trên bàn phím, rồi tìm kiếm “Task Scheduler”. Khởi chạy lối tắt “Task Scheduler”.

Search results in Windows 10 showing Task Scheduler as an option.

Khi nó bắt đầu, hãy xem dưới phần “Hành động” và chọn “Tạo Tác vụ cơ bản”.

Windows 10's Task Scheduler with a red arrow pointing to the "Create Basic Task" option.

Điều này mở ra Thuật sĩ Nhiệm vụ Cơ bản. Đầu tiên, nó sẽ yêu cầu bạn đặt tên cho nhiệm vụ và đưa ra một mô tả. Bạn có thể nhập bất cứ thứ gì bạn muốn ở đây. Chúng tôi gọi nhiệm vụ là “cron”, và mô tả là, “Một nhiệm vụ để bắt đầu cron tại khởi động hệ thống.” Bây giờ, nhấn “Tiếp theo”.

Trong phần sau, chúng tôi bắt đầu kinh doanh. Đầu tiên, Windows muốn biết khi nào chúng ta muốn chạy tác vụ. Chọn nút radio “Khi máy tính bắt đầu” và nhấp vào “Tiếp theo”.

A set of radio buttons in Windows 10 with a red arrow pointing to the "When the computer starts" option.

Trong phần tiếp theo, chúng tôi muốn “Bắt đầu một chương trình”. Tùy chọn đó được chọn theo mặc định, vì vậy hãy nhấp vào “Tiếp theo”.

Windows 10 Task Scheduler's program options with red arrows pointing to the program path and the additional arguments text entry box.

Bây giờ, chúng ta phải chỉ định chương trình mà chúng ta muốn chạy, đó là WSL. Nhập như sau vào hộp mục nhập văn bản “Chương trình/Script”: C:WindowsSystem32wsl.exe

Chúng ta cũng cần thêm một số lập luận, vì tất cả những gì chúng ta đã làm cho đến nay là bắt đầu WSL, nhưng bên trong WSL, chúng ta cần nói với Ubuntu để bắt đầu cron. Vì vậy, trong hộp “Thêm Đối số”, hãy thêm: sudo /usr/sbin/service cron start

Windows 10's Task Scheduler's final task creation window with a red arrow pointing to the option to open the task properties window at finish.

Nhấn “Tiếp theo” một lần nữa, chọn hộp có nội “Mở Hộp thoại Thuộc tính khi tôi nhấp vào Kết thúc”, rồi nhấp vào “Kết thúc”.

A Windows Task properties window with a red arrow pointing to the option "Run whether user is logged on or not."

Nhiệm vụ được tạo ra, nhưng chúng ta phải làm một điều cuối cùng để đảm bảo rằng mọi thứ hoạt động. Một cửa sổ mới sẽ mở ra, hiển thị bản tóm tắt của nhiệm vụ mà bạn đã tạo, nhưng nó chỉ được thiết lập để chạy khi bạn đăng nhập. Chúng ta cần chọn nút radio có nội “Chạy cho dù người dùng có đăng nhập hay không” và sau đó nhấn “OK”.

Bây giờ, chúng ta hãy kiểm tra nhiệm vụ của chúng tôi theo hai cách. Đầu tiên, trong cửa sổ chính của Bộ lập lịch Tác vụ, cuộn xuống cho đến khi bạn thấy tên nhiệm vụ của mình. Nếu bạn sử dụng tên “cron”, nó sẽ được tìm thấy ở đầu danh sách. Bấm chuột phải vào tác vụ và chọn “Chạy”.

A terminal window showing that cron is running.

Sau đó, quay trở lại thiết bị đầu cuối WSL của bạn và nhập vào sudo service cron status , và nó sẽ nói rằng cron đang chạy. Nếu không, hãy kiểm tra kỹ xem bạn đã nhập mọi thứ đúng trong các bước trước đó chưa.

Nếu mọi thứ hoạt động bình thường trong lần kiểm tra đầu tiên, đã đến lúc thử nghiệm lớn. Khởi động lại PC của bạn và khi bạn quay lại, hãy mở thiết bị đầu cuối WSL và chạy sudo service cron status , sẽ báo cáo rằng cron hiện đang chạy.

Chúc mừng! Bạn đã thực hiện bước đầu tiên của bạn vào một thế giới lớn hơn, tự động. Với cron chạy ở chế độ nền, cronjobs mà bạn cấu hình trong WSL sẽ tự động chạy theo lịch trình.

Dịch từ: https://www.howtogeek.com/746532/how-to-launch-cron-automatically-in-wsl-on-windows-10-and-11/

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây