launchctl是一个统一的服务管理框架,可以启动、停止和管理守护进程、应用程序、进程和脚本等。它通过配置文件来指定执行周期和任务。在Mac上,也可以像Linux系统一样使用crontab命令来添加定时任务。下面将手把手教你在mac上创建定时任务,以每天晚上十点定时执行/Users/demo/helloworld.py的python程序为例。

首先,创建一个名为run.sh的脚本文件:

```bash

cd /User/demo

vi run.sh

```

编辑该文件,输入以下内容:

```bash

#!/bin/sh

# 记录一下开始时间

echo `date` >> /Users/demo/log &&

# 进入helloworld.py程序所在目录

cd /Users/demo &&

# 执行python脚本(注意前面要指定python运行环境/usr/bin/python,根据自己的情况改变)

/usr/bin/python helloworld.py # 运行完成

echo 'finish' >> /Users/demo/log

:wq

chmod 777 run.sh

```

保存并退出。接下来,编写一个名为com.demo.plist的plist文件:

```bash

cd /Library/LaunchDaemons/Library/LaunchAgents

vi com.demo.plist

```

编辑该文件,输入以下内容:

```xml

Label

com.demo

ProgramArguments

/bin/sh

/Users/demo/run.sh

RunAtLoad

```

保存并退出。现在,你已经成功创建了一个定时任务,每天晚上十点会自动执行/Users/demo/helloworld.py的python程序。

以下是重构后的内容:

```xml

Label

com.demo.plist

ProgramArguments

/Users/demo/run.sh

StartCalendarInterval

Minute

00

Hour

22

StandardOutPath

/Users/demo/run.log

StandardErrorPath

/Users/demo/run.err

```

请根据以下内容完成内容重构,并保持段落结构:

3. 加载命令

```bash

launchctl load -w com.demo.plist

```

更多的命令如下:

# 加载任务, -w选项会将plist文件中无效的key覆盖掉,建议加上 $ launchctl load -w com.demo.plist

# 删除任务 $ launchctl unload -w com.demo.plist

# 查看任务列表,使用 grep '任务部分名字' 过滤 $ launchctl list | grep 'com.demo'

# 开始任务 $ launchctl start com.demo.plist

# 结束任务 $ launchctl stop com.demo.plist

如果任务被修改了,那么必须先unload,然后重新load。start可以测试任务,这个是立即执行,不管时间到了没有。执行start和unload前,任务必须先load过,否则报错。stop可以停止任务。

番外篇:StartInterval、StartCalendarInterval参数说明:

- StartInterval:指定脚本每间隔多长时间(单位:秒)执行一次;

- StartCalendarInterval:可以指定脚本在多少分钟、小时、天、星期几、月时间上执行,类似如crontab中的设置,包含下面的 key:Minute The minute on which this job will be run. Hour The hour on which this job will be run. Day The day on which this job will be run. Weekday The weekday on which this job will be run (0 and 7 are Sunday). Month The month on which this job will be run.

plist部分参数说明:

- Label:对应的需要保证全局唯一性;

- Program:要运行的程序;

- ProgramArguments:命令语句

您好,macOS 中可以使用 `crontab` 命令来设置定时任务。在 macOS 上设置定时任务大体有两种方案。一种是使用 `crontab`,一种是使用 `Schedule`。以下是使用 `crontab` 的步骤:

1. 打开终端(Terminal)。

2. 输入 `crontab -e` 命令,按回车键进入编辑模式。

3. 在编辑器中添加您想要执行的任务,例如:`0 3 * * * echo "Hello World" >> /Users/yourusername/Desktop/helloworld.txt`。这个任务表示每天凌晨 3 点执行一个脚本,将字符串 "Hello World" 追加到桌面上的 helloworld.txt 文件中。

4. 保存并退出编辑器。