macOS定时器crontab定时执行python脚本

0

查看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命令参数

  1. -u user:用来设定某个用户的crontab服务;
  2. file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
  3. -e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
  4. -l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
  5. -r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
  6. -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,否则会报错。