目录
背景
在mac中执行定时任务,按设置时间执行内容。本例中每天执行整理左面脚本。
其中使用python实现文件执行,使用crontab执行定时任务。
crontab定时任务
在mac中使用crontab 执行定时任务
1、crontab -e 编写定时任务列表
2、crontab -l 查看定时任务列表
3、sudo /usr/sbin/cron start 启动定时任务
4、sudo /usr/sbin/cron status 查看定时任务状态
如何写一个定时任务
一个crontab定时任务由两部分组成,包括要执行的时间和命令。其中时间由5个间隔的*标识,分别代表 分 时 日 月 周。
下方是一条crontab定时任务标识,每天执行一次桌面整理python脚本,并把输出日志写入result.txt。
* 1 * * * python3 /Users/liunan/Downloads/myShellTest/makePro.py >> result.txt
python脚本代码如下:
import os
import shutil
formats = {
"音频":[".mp3",".wav"],
"视频":[".mp4",".avi",".mov"],
"图片":[".jpeg",".jpg",".png","gif",".bmp"],
"文档":[".txt",".pdf",".doc",".docx",".pptx",".xlsx",".xls",".key",".pages"],
"程序":[".exe",".msi"],
"压缩":[".zip",".rar"],
"html":[".html"],
"安装包":[".apk"],
"trace文件":[".trace"],
"shell脚本":[".sh"]
}
def dirMakeBest(str):
os.chdir(str)
for f in os.listdir():
ext = os.path.splitext(f)[-1].lower()
for d,exts in formats.items():
if not os.path.isdir(d):
os.mkdir(d)
if ext in exts:
shutil.move(f,"{0}/{1}".format(d,f))
print("完成")
if __name__ == '__main__':
dirMakeBest(r"/Users/liunan/Downloads")
dirMakeBest(r"/Users/liunan/Desktop")
遇到问题
编写crontab任务没有问题,其中第一行,把日期输出到文件中可以正常执行。
但是剩下的2-5行命令都不可以正常执行。搜索了相关的解决方法(全路径,权限的都没有解决),并且也不知道在哪个目录找到cronlab日志。
经大佬指点,把日志输出到文件中。看到失败原因。 “输入 python3 /Users/liunan/Downloads/myShellTest/makePro.py >>/Users/liunan/Downloads/myShellTest/result.txt 1>/Users/liunan/Pictures/123/out.txt 2>&1”,
看到日志是"Python: can't open file '/makePro.py': [Errno 1] Operation not permitted"。
发现是没有权限打开py文件。
之后就好办了,把cron权限加入全磁盘操作就可以了。
操作方式如链接:https://www.cnpython.com/qa/608984