Computer >> Máy Tính >  >> Hệ thống >> MAC

Cách sử dụng Launcd để chạy các tập lệnh theo lịch trình trong macOS

Cách sử dụng Launcd để chạy các tập lệnh theo lịch trình trong macOS

Launcd là một công cụ để bắt đầu, dừng và quản lý các tập lệnh và quy trình. Nếu bạn đã làm việc với bất kỳ phiên bản Linux nào, bạn có thể quen thuộc với cron. Launcd về cơ bản là cron trong macOS.

Daemon là gì?

Cách sử dụng Launcd để chạy các tập lệnh theo lịch trình trong macOS

Daemons (phát âm là "quỷ") là các tập lệnh chạy ở chế độ nền. Không giống như các ứng dụng, daemon chạy dưới dạng quy trình và không chịu sự kiểm soát trực tiếp của người dùng hoặc ứng dụng khác. Trên macOS, chúng nằm dưới sự chỉ huy của khung khởi chạy quyết định thời điểm chúng bắt đầu và dừng lại.

Cái tên khác thường đến từ con quỷ của Maxwell, một tác nhân tưởng tượng có chức năng sắp xếp các phân tử trong một thí nghiệm tư duy về nhiệt động lực học.

Viết tập lệnh

Cách sử dụng Launcd để chạy các tập lệnh theo lịch trình trong macOS Cách sử dụng Launcd để chạy các tập lệnh theo lịch trình trong macOS

Để chạy các daemon thông qua khởi chạy, bạn sẽ cần viết một số tập lệnh. Ngôn ngữ kịch bản phổ biến nhất là bash. Nếu bạn muốn tìm hiểu thêm về bash scripting, bạn có thể xem hướng dẫn dành cho người mới bắt đầu của chúng tôi về bash scripting.

Sử dụng Launcd

Cách sử dụng Launcd để chạy các tập lệnh theo lịch trình trong macOS

Các tập lệnh trong Launcd được kích hoạt bởi các định nghĩa công việc là các tệp .plist được lưu trữ trong các thư mục cụ thể. Các tệp XML này đặt tên cho công việc, chỉ định tập lệnh sẽ được khởi chạy và cho biết khi nào tập lệnh sẽ được chạy. Khi bạn đã viết xong tập lệnh của mình, bạn sẽ viết và tải một định nghĩa công việc để khởi chạy tập lệnh vào thời điểm thích hợp.

Định nghĩa công việc trông giống như bên dưới:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "https://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>Label</key>
        <string>local.restart</string>
        <key>Program</key>
        <string>/Users/user/Scripts/restart.sh</string>
        <key>RunAtLoad</key>
        <true/>
    </dict>
</plist>

Sửa đổi nếu cần, sau đó đưa nó vào một tệp văn bản có phần mở rộng .plist trước khi thả nó vào đúng thư mục (xem bên dưới).

Có một số phần chính trong mô tả công việc:

  • Nhãn: tên của công việc trong launcherd. Phải là duy nhất cho mỗi công việc. Chúng được viết bằng ký hiệu miền ngược và "cục bộ" là một miền tuyệt vời cho các đại lý tư nhân.
  • Chương trình: đường dẫn đầy đủ của kịch bản mô tả công việc này sẽ khởi chạy.
  • RunAtLoad: mô tả thời điểm nên chạy tập lệnh. Có một số tùy chọn khác nhau ở đây:
    • RunAtLoad :chạy ngay sau khi định nghĩa công việc được tải. Chỉ chạy một lần mỗi lần tải.
    • StartInterval :bắt đầu công việc mỗi n giây. Ví dụ này sẽ chạy công việc cứ sau 7200 giây hoặc 2 giờ một lần.
      <key>StartInterval</key> 
      <integer>7200</integer>
    • StartCalendarInterval :điều hành công việc vào một ngày giờ cụ thể. Đoạn mã dưới đây sẽ chạy công việc hàng ngày lúc 9 giờ sáng.
      <key>StartCalendarInterval</key> 
      <dict>
        <key>Hour</key> 
        <integer>9</integer> 
        <key>Minute</key> 
        <integer>0</integer> 
      </dict>

Đại lý so với daemon

Sau khi viết xong mô tả công việc của mình, bạn cần lưu nó vào thư mục thích hợp.

Launcd giúp phân biệt rõ ràng hơn giữa các tác nhân và các daemon. Một tác nhân chạy thay mặt người dùng đã đăng nhập, trong khi một daemon chạy dưới quyền người dùng root. Điều này có nghĩa là nếu bạn muốn giới hạn một tập lệnh cho một tài khoản người dùng cụ thể, bạn có thể sử dụng một tác nhân. Nếu bạn muốn thứ gì đó chạy bất kể ai đã đăng nhập, bạn sẽ sử dụng daemon.

Sự khác biệt giữa tác nhân và daemon được rút ra từ nơi chúng được lưu trên máy tính:

  • “~ / Library / LaunchAgents” chạy thay mặt cho người dùng đã đăng nhập
  • “/ Library / LaunchDaemons” chạy thay mặt cho người dùng gốc

Bạn sẽ cần lưu bảng xếp hạng của mình vào đúng vị trí.

Đang tải công việc vào Launcctl

Cách sử dụng Launcd để chạy các tập lệnh theo lịch trình trong macOS

Khi bạn đã tạo tập lệnh và lưu tác nhân của mình vào đúng vị trí, bạn sẽ cần tải nó vào launchctl . Điều này sẽ tự động xảy ra khi đăng nhập trong tương lai.

Để xem những gì hiện đang chạy trong laucnhctl, bạn có thể sử dụng launchctl list trong thiết bị đầu cuối. Danh sách khổng lồ này có thể được thêm vào cho tập lệnh của bạn bằng cách gắn nhãn nó bằng những thứ như sau:

launchctl list | grep local.restart

Để tải một tập lệnh, hãy mở Terminal và sử dụng lệnh sau:

launchctl load ~/Library/LaunchAgents/local.restart.plist
Cách sử dụng Launcd để chạy các tập lệnh theo lịch trình trong macOS

Để xóa tập lệnh khỏi hàng đợi khởi chạy, hãy sử dụng unload lệnh:

Tải xuống
launchctl unload&nbsp;~/Library/LaunchAgents/local.restart.plist
Cách sử dụng Launcd để chạy các tập lệnh theo lịch trình trong macOS

Việc tải một công việc sẽ đưa nó vào hàng đợi khởi chạy và công việc sẽ chạy tại thời điểm được chỉ định trong điều kiện khởi chạy của nó. Nếu bạn muốn chạy một tập lệnh ngay lập tức, bạn nên sử dụng lệnh “start”:

launchctl start local.restart

Lệnh này lấy nhãn của công việc và sẽ chỉ hoạt động nếu công việc đã được tải vào launchctl .

Kết luận

Bạn có thể sử dụng Launcd để tạo các tập lệnh thực hiện những việc như dọn dẹp tệp, khởi động lại máy chủ theo lịch trình hoặc chạy ứng dụng khi một tệp nhất định xuất hiện. Để tìm hiểu thêm về khởi chạy, bạn có thể xem hướng dẫn về laucnhd.