美文网首页思科DevNet
Mac 之 crontab 定时任务

Mac 之 crontab 定时任务

作者: 惑也 | 来源:发表于2019-08-26 13:49 被阅读0次

开启 crontab

  • 查看 crontab 是否启动
sudo launchctl list | grep cron
  • 检查需要的文件
ls -al /etc/crontab
  • 如果 crontab 文件不存在则创建
sudo touch /etc/crontab

crontab 命令参数

crontab [-u user] file
 
crontab [-u user] [ -e | -l | -r ]
  • -u user :用来设定某个用户的 crontab 服务;

  • file :命令文件的名字,表示将 file 做为 crontab 的任务列表文件,载入 crontab。如果命令行中没有指定这个文件,crontab 将接受标准输入,即键盘上键入的命令,并载入 crontab

  • -e :编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的 crontab 文件;

  • -l :显示某个用户的 crontab 文件内容,如果不指定用户,则表示显示当前用户的 crontab 文件内容;

  • -r :/var/spool/cron 目录中,删除某个用户的 crontab 文件,如果不指定用户,则默认删除当前用户的 crontab 文件。

crontab文件格式

一、格式
  • 第1列:分钟,0~59
  • 第2列:小时,0~23
  • 第3列:日期,1~31
  • 第4列:月份,1~12
  • 第5列:星期,0~7(0和7表示星期天)
  • 第6列:要运行的命令(如果有多个命令用 && 隔开)
二、特殊字符
  • 星号(*) :代表所有可能的值,例如,month字段如果是星号,则表示在满足其它字段的制约条件后,每月都执行该命令操作;

  • 逗号(,) :可以用逗号隔开的值,指定一个多元素的列表,例如:1,2,5,7,8,9

  • 中杠(-) :可以用整数之间的中杠表示一个整数范围,例如“2-6”表示:2,3,4,5,6

  • 正斜线(/) :可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

三、示例

  • 每1分钟执行一次
*/1 * * * *
  • 每小时的第3和第15分钟执行
3,15 * * * *
  • 每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * *
  • 每个星期一的上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1

crontab创建任务

  • 编辑定时任务
crontab -e
  • 进入 vim 编辑模式,输入指定的定时任务
# 每间隔 3分钟,执行一次python脚本jupyter_convert.py

*/3 * * * * python /Users/******/jupyter_convert.py

crontab服务开启、关闭

  • 开启
sudo /usr/sbin/cron start
  • 重启
sudo /usr/sbin/cron restart
  • 关闭
sudo /usr/sbin/cron stop

常见问题

  • 使用crontab执行脚本时,要确保 crontab 和脚本是否开启执行权限;

  • 无法使用定时任务 crontab 时,可尝试如下方法:

sudo vim ~/.vimrc 

--添加如下内容并保存
autocmd filetype crontab setlocal nobackup nowritebackup
  • 环境变量问题,尽量使用绝对路径;

  • python编码问题,可尝试如下方法:

export LANG=zh_CN.UTF-8

相关文章

网友评论

    本文标题:Mac 之 crontab 定时任务

    本文链接:https://www.haomeiwen.com/subject/nrbrectx.html