Mac设置自启动以及定时任务

Mac设置开机启动项

由于最近使用到开机自启动以及定时任务的开启,在采坑的同事记录一下Mac自启动的以及定时任务开启的正确姿势

Mac 开机自启动以及定时任务设置方式

    1. 使用登录项添加可执行的脚本(此处不做介绍,注意添加可执行权限即可(chmod 777 ..sh))
    1. launchctl加载plist文件
    1. crontab添加可执行文件以及脚本

launchctl加载plist文件

Mac开机启动大部分会使用launchctl加载文件,launchctl 通过 plist 属性列表(Property List)配置。

plist文件位置以及相关权限

~/Library/LaunchAgents 由用户自己定义的任务项
/Library/LaunchAgents 由管理员为用户定义的任务项
/Library/LaunchDaemons 由管理员定义的守护进程任务项
/System/Library/LaunchAgents 由Mac OS X为用户定义的任务项
/System/Library/LaunchDaemons 由Mac OS X定义的守护进程任务项

LaunchDaemons和LaunchAgents的区别?

LaunchDaemons是用户未登陆前就启动的服务,即开机即可启动
LaunchAgents使用户登陆后启动的服务

具体plist设置苹果官方教材,以下示例:





    Label
    cn.GY.tasklogout
    ProgramArguments
    
        /Applications/ATSign.app/Contents/MacOS/ATSign
    
    StartCalendarInterval
    
              Minute
              30
              Hour
              9
              Day
            1
            Month
            5
            
            Weekday
            0
        **Minute
        01
        Hour
        18**
    
    RunAtLoad
    


注意: 在--区间的设置时间点的plist的key,此处必须为integer,而非string,刚开始使用string会造成app一直无限自启动,后来查文档发现是integer,才解决了这个问题。

部分键值说明

  • Label
    服务的名称,不可重复,可与当前plist文件名一致
  • Program
    需要启动的程序(可不设置ProgramArguments)
  • ProgramArguments
    -startup开机启动
  • StartCalendarInterval
    此处设置具体时分秒以及工作日等相关信息的设置,注意key值类型相照应,如果不设置会默认任意时间点启动

Mac通过launchctl加载plist的相关命令

  • 检查plist语法是否正确
plutil ~/Library/LaunchAgents/demo.plist
  • 加载配置文件,使配置文件生效
launchctl load ~/Library/LaunchAgents/demo.plist
  • 取消当前配置文件的进程
launchctl unload ~/Library/LaunchAgents/demo.plist
  • 查看当前你服务是否加入
launchctl list 所有服务
launchctl list | grep demo 过滤后的服务
  • 如果加载服务后,再次修改该服务plist文件,可通过取消当前配置在加载当前配置的方式修改服务
launchctl unload
launchctl load

crontab执行脚本文件等

编辑自定义自己的任务

 crontab -e
 13 15 * * *  /usr/local/bin/python2.7  
 /Users/macprohz/Desktop/Python/WebAppDemo/GY.py

添加编辑wq保存即可, 以上代表意义:在15:30分启动python脚本GY.py

时间格式

 *      *      *     *      *   command
 分     时      日    月     周    命令

第1列表示分钟1~59 每分钟用或者 /1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
5个*表示每分钟
*表示每分钟/时/日/月/周
/n表示每隔n分钟/时/日/月整/周
每个时间位多个数值用逗号隔开:
* * * 0,1,2,3,4,5就表示除了周六以外的每一分钟

     “*”代表取值范围内的数字,

     “/”代表”每”,

     “-”代表从某个数字到某个数字,

     “,”分开几个离散的数字

crontab的一些终端命令

ps aux | grep cron :查看服务是否已经运行用 
crontab -e:编辑当前用户crontab任务,保存退出后自动加到crontab列表中执行 
crontab -l :查看当前用户所有crontab 列表 
crontab -r :删除当前用户所有crontab 列表

总结:此文仅为记录Mac下的启动方式,防止个人用到时又要无休止的goole,大部分资源还是很早之前的,特此记录(GiantForJade)。

参考文献
launchctl
crontab

你可能感兴趣的:(Mac设置自启动以及定时任务)