Mac下crontab执行定时脚本, 在Linux下 以root用户权限执行定时计划,完成特定功能。
那么,在本地呢,是否可以? 答案是当然的。 Linux是Unix的开源实现。 BSD被认为是Unix精神的继承者(BSD同样也是Unix的另外一个开源实现)也是Unix的一种。 而mac_os是基于BSD的。他们都是相仿的。
crontab默认都是安装好的,直接用就好
说明:
1、Linux和Mac下操作crontab都是一致的
2、配置文件都在/etc/crontab下,如果没有就创建(不创建会导致任务不执行)
sudo touch /etc/crontab
3、测试发现直接使用crontab -e命令创建的定时任务是放在临时文件夹的,重启会删除(我本地Mac版本为11.4,重启后并不会删除),并且与/etc/crontab文件无关联
4、crontab -e 编辑添加任务命令
5、crontab -l 查看任务的运行情况
6、crontab -r 删除
crontab文件的语法格式:
每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:
minute hour day month week command
# For details see man 4 crontabs
# Example of job definition:
.---------------------------------- minute (0 - 59) 表示分钟
| .------------------------------- hour (0 - 23) 表示小时
| | .---------------------------- day of month (1 - 31) 表示日期
| | | .------------------------- month (1 - 12) OR jan,feb,mar,apr ... 表示月份
| | | | .---------------------- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat 表示星期(0 或 7 表示星期天)
| | | | | .------------------- username 以哪个用户来执行
| | | | | | .------ command 要执行的命令,可以是系统命令,也可以是自己编写的脚本文件
| | | | | | |
* * * * * user-name command to be executed
示例:
# 每1分钟执行一次Command
*/1 * * * * Command
# 每1小时执行一次Command
0 */1 * * * Command
# 每小时的第3和第15分钟执行
3,15 * * * * Command
# 每天早上9点执行
0 9 * * * Command
# 在上午8点到11点的第3和第15分钟执行
3,15 8-11 * * * Command
# 每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * Command
# 每周一上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 Command
# 晚上11点到早上7点之间,每隔一小时重启httpd服务
* 23-7/1 * * * service httpd restart
使用:
在终端使用 crontab -e 创建一条定时任务
需求:如何在tp6框架中使用呢?
答:可以使用tp框架的 自定义指令 来实现,如:添加了hello指令
# 在tp项目根目录下运行
php think hello
# 在 crontab -e 中添加一条命令,然后 :wq 保存并退出
* * * * * /usr/local/Cellar/php@7.3/7.3.29/bin/php /path/yourapp/think hello
小节:
*
表示任何时候都匹配"a,b,c"
表示a 或者 b 或者c 执行命令"a-b"
表示a到b 之间 执行命令"*/a"
表示每 a分钟(小时等) 执行一次- crontab 不能编辑系统级的 任务