Mac OS系统使用crontab定时执行Python3程序的一些实践

Crontab用于自动执行周期性任务,比如,每天自动爬取最新的域名信息、房价信息等,不需要任何人工干预。
Crontab很强大,但是也有很多坑。我把一些命令,以及遇到的一些问题,写在这里。
添加任务:
crontab -e
查看任务:
crontab -l
命令格式:

常用命令:
每五分钟执行 */5 * * * *
每小时执行 0 * * * *
每2小时执行 0 */2 * * *
每天执行 0 0 * * *
每周执行 0 0 * * 0
每月执行 0 0 1 * *
每年执行 0 0 1 1 *
查看crontab最近日志:
tail -f /var/mail/username
常见错误:

Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 916, in _bootstrap_inner
self.run()
File "/Users/user/PycharmProjects/test/auto.py", line 26, in run
self.db()
File "/Users/user/PycharmProjects/test/auto.py", line 32, in db
print('\u6570\u636e\u5e93\u8fde\u63a5')
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)

在终端手动执行代码完全正常,但crontab执行相同.py 脚本时却出现以上错误。
看报错信息,是由于输出中文,导致的编码问题。
查看终端环境,已经是UTF-8。这时再用网上的改环境变量、在 python 程序里加头部等方法,是无效的。
crontab并没有使用系统的默认环境,我们需要在crontab里加一句:
PYTHONIOENCODING=utf-8
即可解决问题。
crontab是很有意思的,慢慢探索,慢慢发现。