每日/每周/每月的维护任务如何进行以及如何自动执行它们?

每日/每周/每月的维护任务如何进行以及如何自动执行它们?

MacOS 自带每日/每周/每月系统任务。但是看起来我必须手动启动这些任务。有没有办法让这些任务每天/每周/每月自动执行?

答案1

它们之所以被这样命名,是因为它们已经每天、每周和每月执行。MainMenu 只是让你手动执行它们。

打开终端并输入以下内容:

ls -al /var/log/*.out

这些日志文件名旁边列出的日期是上次执行相应维护任务的日期:

-rw-r--r--  1 root  wheel  496994  5 Mar 03:15 /var/log/daily.out
-rw-r--r--  1 root  wheel    2088  1 Mar 06:02 /var/log/monthly.out
-rw-r--r--  1 root  wheel    5289  5 Mar 03:15 /var/log/weekly.out

使用命令手动运行它们periodic。您需要root权限才能执行此操作,并且需要提供要执行的操作。要运行所有这些:

sudo periodic daily weekly monthly

您可以使用 AppleScript 编辑器来制作脚本或应用程序,例如通过输入以下命令来执行每周任务:

do shell script "periodic weekly" with administrator privileges

使用 Automator,您可以将其变成一项服务。


要更改这些任务的定期安排时间,请编辑其首选项文件:

/System/Library/LaunchDaemons/com.apple.periodic-daily.plist
/System/Library/LaunchDaemons/com.apple.periodic-weekly.plist
/System/Library/LaunchDaemons/com.apple.periodic-monthly.plist

您可以使用属性列表编辑器包含在 Apple 的开发者工具中,或者一个简单的文本编辑器。查找<key>StartCalendarInterval</key>。它们的运行时间非常直观:

每天凌晨 3:15 运行,如果可以的话:

<dict>
    <key>Hour</key>
    <integer>3</integer>
    <key>Minute</key>
    <integer>15</integer>
</dict>

每周六运行一次:

<dict>
    <key>Hour</key>
    <integer>3</integer>
    <key>Minute</key>
    <integer>15</integer>
    <key>Weekday</key>
    <integer>6</integer>
</dict>

每月第一天一次:

<dict>
    <key>Hour</key>
    <integer>5</integer>
    <key>Minute</key>
    <integer>30</integer>
    <key>Day</key>
    <integer>1</integer>
</dict>

本网站解释运行这些脚本时发生的情况。

相关内容