Cron? Ra mắt? iCal ??
Nếu vậy thì thế nào?
Cron? Ra mắt? iCal ??
Nếu vậy thì thế nào?
Câu trả lời:
Để tham khảo, cả 3 tùy chọn sẽ hoạt động. Tuy nhiên, tùy chọn iCal có nhiều hạn chế hơn các tùy chọn khác.
(Có GUI để chỉnh sửa cron và launchd như được đề cập trong các câu trả lời khác)
Cron là người thẳng thắn nhất và nổi tiếng và có nhiều hướng dẫn có sẵn. Ghi chú Coles là thêm dòng cuối cùng từ bên dưới vào crontab của bạn (bằng cách chỉnh sửa /etc/crontab
hoặc sử dụng crontab
trên dòng lệnh):
MM HH DD MM WKD -- Minutes, Hour, Day, Month, Weekday (eg. Sun, Mon)
MM HH * * * USERNAME /PATH/TO/SCRIPT
00 3 * * * chealion /myscript.sh "Runs at 03:00 every day"
Trong Mac OS X, cron
thực tế đã được thay thế bởi launchd
nhưng launchd
tương thích ngược với cron
nghĩa là bạn vẫn có thể sử dụng cron
nhưng thực tế nó launchd
đang làm tất cả công việc.
Nếu bạn muốn sử dụng, launchd
bạn cũng muốn xem các câu hỏi khác ở đây trên Super User: (ví dụ: Làm cách nào để tôi chạy lệnh launchd với quyền root? ) Như nơi bạn muốn lưu tệp cấu hình của mình (tệp plist) vì khi nó chạy tùy thuộc vào thư mục nào được lưu trữ và cách tải (ví dụ: bạn có sử dụng sudo hay không) - tương tự như cron.
Một mẫu chạy plist hàng ngày (chắc chắn rằng tệp và nhãn giống nhau - trừ đi phần chính cho nhãn) theo sau - tập lệnh này được chạy hàng ngày vào lúc 3 phút trước nửa đêm:
<?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>local.IDENTIFIER_HERE.SOMETHING</string>
<key>KeepAlive</key>
<false/>
<key>RunAtLoad</key>
<false/>
<key>UserName</key>
<string>USERNAME HERE</string>
<key>Program</key>
<string>/PATH/TO/SCRIPT</string>
<key>ProgramArguments</key>
<array>
<string>Argument_1</string>
<string>Argument_2</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>00</integer>
<key>Minute</key>
<integer>03</integer>
</dict>
</dict>
</plist>
Cũng đáng lưu ý rằng các tác vụ khởi động nếu chúng được lên lịch khi máy tính ngủ hoặc tắt, chúng sẽ chạy khi máy tính khả dụng trở lại (bật hoặc đánh thức nó) - mặc dù chỉ một lần cho dù có bao nhiêu ngày đã. Chỉnh sửa: Tôi vừa ở một tài liệu của Apple nói rằng nếu máy bị tắt thì bạn sẽ mất bất kỳ sự kiện khởi chạy nào trong thời gian đó, (tập lệnh của bạn sẽ không khởi chạy khi khởi động), (ngủ không khởi chạy tập lệnh khi thức dậy)
Một tùy chọn khác là sử dụng " at " (kiểm tra trang thủ công với "man at"). Kịch bản có thể tự lên lịch lại với: vd:
echo "sh $0 $@" | at `date +%H:%M` tomorrow
(sử dụng "+ 10 phút" thay vì "ngày mai" để chạy nó cứ sau 10 phút; để dừng lập lịch, chỉ cần thực hiện "at -l" để liệt kê các id công việc đã lên lịch và sau đó "at -r id " để xóa công việc)
Trước tiên, bạn có thể phải bắt đầu trình nền tương ứng (atrun) bằng (xem https://superuser.com/a/43680 ):
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist
Ưu điểm: khắc phục nhanh, không cần truy cập sudo / root, dễ thực hiện các mẫu lịch biểu phức tạp Nhược điểm: không phải là phương pháp lập lịch chuẩn cho OS X (được khởi chạy)
launchd
là cách để đi theo OS X.
crontab -e
, nó sẽ đưa bạn vào trình soạn thảo văn bản dựa trên thiết bị đầu cuối trên một tệp sẽ trở thành crontab cá nhân của bạn khi bạn lưu nó.
LaunchControl là một GUI khác cho launchd / launchctl. Mặc dù các lựa chọn thay thế được đề cập bởi những người khác hoàn toàn có khả năng khởi chạy một tập lệnh hàng ngày, nhưng với LaunchControl, bạn có thể định cấu hình lịch biểu phức tạp (như "một lần mỗi ngày trong tuần, vào cuối tuần mỗi giờ trong khoảng từ 2 giờ chiều đến 8 giờ tối"). Ngoài ra, nó là (AFAIK) công cụ duy nhất thực sự xác nhận công việc. Nếu một công việc không hoạt động như mong đợi, nó sẽ cho bạn thấy lý do tại sao.
Miễn phí thử miễn là bạn muốn.
cron
nếu bạn google cho nó.Nó phụ thuộc vào những gì bạn muốn: tập lệnh iCal sẽ chỉ được thực thi nếu bạn đã đăng nhập, cron
thực thi tập lệnh mà không cần đăng nhập. Tôi không biết nếu iCal thực thi tập lệnh nếu Mac được bật vào thời điểm tập lệnh nên đã bị xử tử. cron
đang làm điều này
Bản cập nhật: Bạn có thể kiểm tra một số ứng dụng trong Mac OS X App Store thực hiện việc này:
Lingon dường như cũng có sẵn, tùy thuộc vào hệ điều hành bạn đang chạy.
Đây là một tiện ích đơn giản, miễn phí để tạo XML nguyên bản:
http://www.gieson.com/L Library / project / utilities / launcha /
Với ứng dụng này, không cần cài đặt chương trình, chỉ cần lưu kết quả vào thư mục Thư viện / LaunchAgents của bạn.
RunAtStart
được đặt thành false (trừ khi bạn muốn nó đúng). Tôi đã dành một giờ để tìm hiểu lý do tại sao Finder của tôi sẽ đóng băng và ngăn máy tính để bàn tải khi khởi động. Vô hiệu hóa RunAtStart
không can thiệp vào lịch trình cố định.
Tôi luôn sử dụng Lingon cho việc này, nhưng có vẻ như nó không phát triển. Bạn có thể dùng thử Crontooie , nhưng tôi chưa bao giờ sử dụng nó. Hoặc chỉ cần chỉnh sửa tệp crontab trong thiết bị đầu cuối.
Nếu bạn muốn dùng thử MIỄN PHÍ, tôi sẽ đề xuất Nhiệm vụ cho đến khi bình minh
sp@mactop ~ $ crontab -l
*/5 * * * * /usr/local/bin/cinco.sh
sp@mactop ~ $ cat /usr/local/bin/cinco.sh
#!/bin/sh
....cut....
sp@mactop ~ $
... bất cứ dòng lệnh nào bạn ném vào cho ".... cắt ...." sẽ được chạy cứ sau năm phút.
30 năm tiến bộ và 'cron' vẫn là lịch trình yêu thích của tôi.
-C
Nếu một sự kiện lịch đáp ứng nhu cầu của bạn, ứng dụng Automator tích hợp cũng cho phép bạn tạo Báo thức lịch được kích hoạt bởi các sự kiện lịch. Bạn có thể sử dụng một số hành động dựa trên giao diện người dùng tích hợp để làm những gì bạn muốn hoặc bạn cũng có thể chạy nó một số ứng dụng hoặc tùy chỉnh AppleScript, JavaScript hoặc shell script.