macOS High Sierra
![](https://help.apple.com/assets/58C4E5B4680CE2040551BA60/58C4E5B6680CE2040551BA69/zh_CN/31d7054c3bcf00abcba6dd75555bcff0.png)
在特定时间运行 shell 脚本
若要安排 shell 脚本在特定时间运行,请使用 launchd
或 cron
。
使用 launchd 安排任务
安排任务时使用
launchd
而不是cron
。若使用了launchd
,那么当任务由于电脑关机或睡眠而被跳过时,它会在电脑重新上线时添加到队列。若要使用
launchd
来安排基于定时器的作业,请使用StartCalendarInterval
或StartInterval
键。有关
launchd
的更多信息,请参阅其 man 页面。
使用 cron 安排任务
cron
守护进程执行的是 crontab 文件中定义的预定命令。cron
守护进程在“/usr/lib/cron/tabs/”文件夹中搜索以“/etc/passwd”中的帐户命名的 crontab 文件,并将文件载入到内存中。cron
守护进程还会在“/etc/crontab/”文件夹中搜索其他格式的 crontab 文件。然后,cron
会每分钟循环一次,查看储存的 crontab 文件,并且检查每个命令以确定其是否应在这一分钟运行。
命令执行时,输出会被发送到 crontab 文件的所有者或 crontab 文件的可选 MAILTO 环境变量中指定的用户。
使用 crontab
工具来安装或卸载 cron
守护进程,或列出用于驱动 cron
守护进程的表格。用户可以拥有他们自己的 crontab 文件。
若要配置 crontab 文件,请使用
crontab -e
命令。这会在编辑模式下打开一个空的 crontab 文件。以下是 crontab 文件的示例:
SHELL=/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log
#min hour mday month wday command
30 18 * * 1-5 diskutil repairPermissions /Volumes/MacHD
50 23 * * 0 diskutil repairVolume /Volumes/MacHD
在此示例中,第一个条目会在星期一到星期五每天的 18:30 修复“MacHD”宗卷的磁盘权限:
30 18 * * 1-5 diskutil repairPermissions /Volumes/MacHD
第二个条目计划在每周日的 23:50 进行宗卷修复操作:
50 23 * * 0 diskutil repairVolume /Volumes/MacHD