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
```
保存并退出。现在,你已经成功创建了一个定时任务,每天晚上十点会自动执行/Users/demo/helloworld.py的python程序。
以下是重构后的内容:
```xml
```
请根据以下内容完成内容重构,并保持段落结构:
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
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. 保存并退出编辑器。