mac如何写一个定时任务

目录

背景

crontab定时任务

如何写一个定时任务

遇到问题


背景

在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

 
Mac上设置定时任务,通常使用的是“Automator”(自动化工具)或“cron”命令行工具,这两个方法可以帮助你创建计划的任务。以下是两种常见的设置步骤: 1. **使用Automator**: - 打开Finder,然后转到“应用程序” > “实用工具” > “Automator”。 - 选择“文件” > “新建”,选择“工作流程”模板,然后从左侧库选择需要的动作(如“运行AppleScript脚本”、“移动文件到”等)。 - 按照界面提示设置好时间、触发条件(如每天的特定时间)以及所需的操作。 - 完成后,将工作流程保存并命名为你需要的名称,比如“定时发送邮件”。然后在Spotlight搜索中输入“Automator”启动它,选择你的工作流程即可。 2. **使用cron命令行** (适用于熟悉Linux终端用户): - 打开终端(Terminal)。 - 使用`crontab -e`编辑当前用户的cron配置文件。这会打开一个文本编辑器,如vim或nano。 - 在文件底部添加一个新的定时任务行,格式通常是这样的: ``` * * * * * /path/to/command ``` 其中,第一列是分钟(0-59),第二列是小时(0-23),第三列是月份中的日期(1-31),第四列是星期几(0-7,其中0和7代表周日),第五列是你想要执行的命令路径。 - 保存并退出,新的定时任务就会按照你设定的时间开始执行。 记得在每次更改完成后,用`sudo crontab -u username -r`清除缓存,再重启计算机让新设置生效。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值