在Mac上定时执行任务

在Mac上,执行定时任务,有两种方式:

使用launchctl

沿袭Linux常用的crontab命令

毕竟咱是在mac上开发,这里只讲launchctl的用法

1.首先需要编写plist文件

下图是我的一个很简单的任务plist文件:

可以使用plutil -lint来验证plist的格式是否正确(这只是代表plist格式正确,不代表里面的命令是有效的)

plist文件里具体的key可以参考:

2.定时脚本

上图使用的定时脚本为test.sh,以下为文件内容:

#!/bin/sh

say hello world

上面的脚本会让电脑发声“hello world”,记得打开电脑音量~

注意:

你需要将test.sh置为可执行文件,可用命令:chmod a+x test.sh。

否则的话,脚本就根本不可能执行的。网上很多文章都没强调这一点

你也可以使用ls -l看看test.sh是否可执行(拥有x权限),如下图:

3. plist文件放置处:

~/Library/LaunchAgents 由用户自己定义的任务项

/Library/LaunchAgents 由管理员为用户定义的任务项

/Library/LaunchDaemons 由管理员定义的守护进程任务项

/System/Library/LaunchAgents 由Mac OS X为用户定义的任务项

/System/Library/LaunchDaemons 由Mac OS X定义的守护进程任务项

建议放在 ~/Library/LaunchAgents 下面。

下面再来理解几个基础概念:

/System/Library和/Library和~/Library目录的区别?

/System/Library目录是存放Apple自己开发的软件。

/Library目录是系统管理员存放的第三方软件。

~/Library/是用户自己存放的第三方软件。

LaunchDaemons和LaunchAgents的区别?

LaunchDaemons是用户未登陆前就启动的服务(守护进程)。

LaunchAgents是用户登陆后启动的服务(守护进程)。

4.加载命令

最常使用的命令:

加载任务 launchctl load -w ***.plist ;-w选项会将plist文件中无效的key覆盖掉,建议加上

删除任务 launchctl unload -w ***.plist

查看任务列表 launchctl list;列表会显示很多任务,建议过滤一下:launchctl list | grep '任务的部分名字'

5.题外话

我在用 launchctl 或者 crontab 遇到同样的问题:

比如我的 launchctl 里面加载了脚本test.sh

test.sh 脚本的内容:

#!/bin/bash

svn status | xargs echo

echo "out: 输出正确的中文"

在使用在launchctl 定时执行test.sh脚本的输出:

svn st | xargs echo: 这行输出如果有中文,中文部分乱码;

echo "out: 输出正确的中文": 这行会输出正确的中文

这里面就是编码的问题,之后我参考了下面的文章:

前段时间一直为linux下的SVN邮件通知乱码而发愁,苦苦寻找了2个星期最终发现自己果然很白。。不知道是问题太简单了还是别的原因,,一直没有在网上找到解决的相关方法和资料(大部分都是windows下的配置,可是额D是linux哇)。下面是解决方法,希望对和我一样郁闷的人有帮助

之前有人说修改/etc/profile 加入环境量变,这个只能修改邮件本身的乱码问题,不能修正log diff中的乱码,乱码的原因是在svn调用post-commit的时候没有定义变量造成的,svn和crontab是无视系统默认变量的(=。=!!)。需要在post-commit中加入

#!/bin/sh

LANG=en_US.UTF-8

export LANG

之后svn或者crontab在调用的时候就可以正常输出中文了 编码可以按自己的情况进行修改~

按照里面的说明,将test.h脚本文件修改如下:

#!/bin/bash

LANG=en_US.UTF-8

export LANG

svn status | xargs echo

echo "out: 输出正确的中文"

设置了编码之后,所有的输出立马就正常了。

6.参考:

感兴趣的,想深入研究的,建议看看文章

苹果官方文档:

alvinalexander.com上的文章:

其他:

mac linux 计划任务,Mac上,执行定时任务:launchctl相关推荐

  1. linux计划任务一小时,linux,计划任务,每小时执行一次(共7篇).docx

    linux,计划任务,每小时执行一次(共7篇) Linux下的计划任务命令小结 在UNIX下怎样实现和Windows下"计划任务"一样的功能 $crontab-e编辑脚本 $cro ...

  2. Linux 在一个命令行上执行多个命令

    Linux 在一个命令行上执行多个命令 1. [ ; ] 如果被分号(;)所分隔的命令会连续的执行下去,就算是错误的命令也会继续执行后面的命令. 2. [ && ] 如果命令被 &am ...

  3. Linux下使用crontab来执行定时任务计划----执行每晚12点多执行移动log日志文件操作

    一.mvlogs.sh文件: mv `find  /usr/local/logs -name 'Interface.log2010*.log' -mtime +4 |xargs -r`  /usr/l ...

  4. linux 命令行修改mac,Linux下修改MAC地址

    Linux下修改MAC地址 Author: Jaylin Zhou Date: 10/17/2009 使用ifconfig命令 标准形式: # ifconfig device_name hw ethe ...

  5. mac linux 性能测试工具,Mac/Linux压力测试神器Siege详解(附安装过程)

    背景描述 在做Web项目或者一个服务器程序的时候,往往会遇到以下的场景,想要确定自己服务器吞吐量有多大.在服务器中需要应用线程池但不知道线程池的数量应该设置多少.对JVM相关参数进行调优验证时需要大量 ...

  6. linux 网卡聚合mac,linux网卡与MAC地址绑定方法总结

    使用linux系统时会出现这样的情况,当你安装了某个网卡的驱动程序时,或者安装了与网卡相关的程序后. 网卡会出现所谓的漂移现象.(注意:不是飘逸 ).可能的表象为: (1):网卡顺序颠倒,比如之前你的 ...

  7. php乱炖,linux使用crontab实现PHP执行定时任务 | 乱炖

    首先说说cron,它是一个linux下的定时执行工具.根用户以外的用户可以使用 crontab 工具来配置 cron 任务.所有用户定义的 crontab 都被保存在/var/spool/cron 目 ...

  8. anaconda企业版下载_Anaconda3 Mac版-Anaconda3 for Mac下载 V1.9.12-PC6苹果网

    Anaconda3 Mac版是Mac电脑上的一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项,包含了大量的科学包.Anaconda3 Mac版是在单机上执行 ...

  9. Mac上执行Linux可执行文件报错:cannot execute binary file

    问题 在Mac上执行一个Linux可执行程序.出现以下报错:-bash: xxx: cannot execute binary file 解决 在Linux系统上执行,或在Mac上安装虚拟机.

最新文章

  1. R语言使用coin包应用于分类变量独立性问题的置换检验(permutation tests)、使用普通卡方检验chisq.test函数和置换近似卡方检验chisq.test函数、检验分类变量的独立性
  2. 10万视频,所有图像均获授权,Facebook创建大规模Deepfake数据集
  3. CISCO与华为3COM路由器配置差别
  4. 爬取京东网页评论(动态网页)
  5. 朋友,别告诉我你懂分布式事务!
  6. c#winform控件过多卡顿问题解决方案
  7. JAVA程序(阶乘10以内)
  8. 退出mysql服务器的命令,mysql的登陆和退出命令格式
  9. 《英雄联盟》出现大面积闪退;两名 95 后大学生用脑电波写“福”字;Windows蓝屏为什么是蓝底白字? | 极客头条...
  10. getaway网关转发去前缀_蚂蚁金服 Service Mesh 大规模落地系列 - 网关篇
  11. springboot如何对本地数据库增删改查_mysql数据库基本增删改查操作总结
  12. 在线编程JavaScript
  13. 【汇编程序】实现1-100求和(使用LOOP循环)
  14. 弹弹堂手游语音服务器怎么连接,腾讯弹弹堂手游空间怎么进去 互动玩法攻略介绍...
  15. Ubuntu下载压缩文件
  16. 小程序支付:appid和mch_id不匹配采坑实录
  17. 如何认知MOSFET、IGBT等模拟功率器件
  18. 一些英文词的标准缩写
  19. c 语言指针数组长度,c如何获取指针数组的长度?
  20. OpenRisc-OptiMSoC

热门文章

  1. 汽车部件IPX9K/IP69K、IP66K等ip防护等级测试的应用
  2. 柜子与抽屉-数据展示组件
  3. 财经计算机财务函数,19个常用财务Excel函数公式,轻松搞定一半的工作,值得收藏...
  4. matlab树莓派usb摄像头,求 问Simulink做树莓派摄像头显示的一些问题
  5. Apollo:源码分析之cyber\blocker\blocker.h
  6. AToken全观:V神发话了,支持钱包开发者收取额外交易费
  7. 前端HTML+JS实现四级联动
  8. 二、SQL注入使用占位符解决、JDBC工具类、封装
  9. 视频怎么压缩大小?教你几个压缩视频小技巧
  10. 怎么给视频添加音频或配乐 1