OS X: Có chương trình lập lịch trình tích hợp không?


10

Tôi muốn lên lịch một tác vụ để thực hiện với các tham số tại một thời điểm / ngày cụ thể trong tương lai.

OS X có bao gồm bất kỳ công cụ nào như vậy không (ngay cả khi đó là dòng lệnh)? Nếu không, có bất kỳ công cụ miễn phí hoặc tương đối rẻ ngoài kia để thực hiện điều này?

Câu trả lời:


14

Trong khi câu trả lời KeithB là đúng, trên thực tế, cron đã được tán thành ủng hộ các cụ OS X launchd .

Các lệnh được chạy qua launchdđược mô tả trong "danh sách" của Apple hoặc danh sách tài sản, thực sự chỉ là các tệp XML:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.
com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>  
    <key>Label</key>
    <string>com.apple.periodic-daily</string>
    <key>ProgramArguments</key>
    <array> 
        <string>/usr/sbin/periodic</string>
        <string>daily</string>
    </array>
    <key>LowPriorityIO</key>
    <true/>
    <key>Nice</key>
    <integer>1</integer>
    <key>StartCalendarInterval</key>
    <dict>  
        <key>Hour</key>
        <integer>3</integer>
        <key>Minute</key>
        <integer>15</integer>
    </dict>
</dict>
</plist>

Phải nói rằng, đó không phải là cách lập lịch lệnh thân thiện với người dùng (cũng không giống Mac) để chạy. Câu hỏi này trên SuperUser liệt kê một vài lựa chọn thay thế GUI, bao gồm:

Tiếng la hét

launchd Editor ($ 5 License)

Chụp màn hình


3
Đây không phải là một đặc điểm công bằng mà launchd là "độc quyền". Apple háo hức mở nguồn tại launchd.macosforge.org và nó đã được chuyển sang FreeBSD.
ohmantics

@ohmantics: Ok, điểm công bằng. Là "cụ thể" một mô tả tốt hơn?
Josh

Đủ gần. :-) Apple đã tạo ra nó, nhưng tôi hy vọng nó sẽ thấy việc áp dụng rộng rãi hơn trên các hệ điều hành giống như BSD.
ohmantics

@calavera: Cảm ơn bạn đã chỉnh sửa. Tôi ghét nó khi các tài liệu trên các trang web lớn được gỡ bỏ như thế. Tôi đã thêm một liên kết mới mà đáng buồn là ít liên quan hơn, nó không đề cập cụ thể đến cronviệc bị phản đối :-(
Josh

np ... thật không may, Apple dường như làm điều đó rất nhiều: /
Robert S Ciaccio

4

Bạn cũng có thể bắt đầu quy trình làm việc của Automator với iCal nếu bạn chỉ muốn một cái gì đó đơn giản. Nếu không tôi sẽ làm điều đó thông qua launchd.


Vấn đề duy nhất với iCal là bạn phải đăng nhập để thực hiện tác vụ (đúng không?)
Josh

vâng, tôi nghĩ bạn phải đăng nhập để làm điều này. Tôi muốn giới thiệu quy trình launchd về vấn đề này, nhưng một số người thà chỉ sử dụng iCal và luôn đăng nhập.
jmlumpkin

iCal là một giải pháp dễ dàng hơn nhiều! Xem mũ màn hình tôi đã đăng. Tôi chắc chắn có thể thấy làm thế nào họ có thể đáng sợ :-)
Josh

chỉ để làm rõ, ảnh chụp màn hình của bạn là để thiết lập launchd, đúng không?
jmlumpkin

2

Có hai công cụ dòng lệnh Unix làm những gì bạn muốn. atsẽ cho phép bạn lên lịch một tác vụ để thực hiện một lần tại một thời điểm cụ thể trong tương lai. Tất nhiên, một phần của nhiệm vụ có thể là lên lịch cho một nhiệm vụ khác.

cron cho phép bạn lên lịch các nhiệm vụ để thường xuyên thực hiện cùng một lúc, dựa trên thời gian trong ngày, ngày trong tuần, v.v.

Một điều cần lưu ý là cả hai điều này sẽ không chạy các tác vụ nếu máy của bạn không chạy vào thời điểm chúng được lên lịch. Có những lựa chọn thay thế, như anacron, sẽ chạy các tác vụ theo lịch trình vào lần tiếp theo khi máy khởi động.


1
Lưu ý rằng, theo mặc định, lệnh "at" bị tắt. Sử dụng "man atrun" để tìm ra cách kích hoạt nó.
Kristopher Johnson

2

iCal có thể được sử dụng để chạy AppleScripts , khởi chạy ứng dụng và thực hiện các tác vụ theo lịch trình.

Có những hạn chế khi sử dụng iCal, nhưng nó được bao gồm trong Mac OS X và tương đối dễ cài đặt. Các giới hạn và hướng dẫn trực quan về cách thiết lập AppleScript được lên lịch được bao gồm trong liên kết ở trên.

Thiết lập AppleScript được lên lịch với iCal trên Mac OS X

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.