macOS定时器crontab定时执行python脚本
查看crontab执行环境
查看是否安装python
$ which python3
/usr/local/bin/python3
查看crontab是否启动
$ sudo launchctl list | grep cron
Password:
53570 0 com.vix.cron
crontab 服务开启、重启和关闭
sudo /usr/sbin/cron start sudo /usr/sbin/cron restart sudo /usr/sbin/cron stop
查看database是否存在
$ locate com.vix.cron
WARNING: The locate database (/var/db/locate.database) does not exist.
To create the database, run the following command:
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
Please be aware that the database can take some time to generate; once
the database has been created, this message will no longer appear.
如果报以上错误,则没有database,创建:
$ sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
查看/etc/crontab是否存在
$ ll /etc/crontab
不存在则创建:
$ sudo touch /etc/crontab
crontab命令参数
- -u user:用来设定某个用户的crontab服务;
- file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
- -e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
- -l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
- -r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
- -i:在删除用户的crontab文件时给确认提示。
常用的操作基本就是修改和查看
修改:crontab -e
查看:crontab -l
crontab文件格式
* * * * * command
M H D m d command
M: 分(0-59)
H:时(0-23)
D:天(1-31)
m: 月(1-12)
d: 周(0-6) 0为星期日
每分钟执行命令:查询当前时间* * * * * date
每天9点30执行命令:查询当前时间30 9 * * * date
日志重定向
不做任何处理日志会保存到/var/mail/Username
文件夹下。
可以用2>&1
来重定向日志保存路径。
# 每天9:30执行python脚本,并且将执行日志保存到/Users/admin/Documents/py_bao/ko_data/log/路径下
30 9 * * * /usr/local/bin/python3 /Users/admin/Documents/py_bao/ko_data/ko.py >> "/Users/admin/Documents/py_bao/ko_data/log/$(date +"\%Y-\%m-\%d_\%H").log" 2>&1
执行脚本的时候要将命令的路径写出来
usr/local/bin/python3
,否则会报错。