MacOS不像 Linux 有 /etc/init.d/rc.local 以及 service 的方式可以设置程序随机启动,而是使用 plist 文件管理。你可以写一个plist文件放到~/Library/Launch Agents/下面,文件里描述你的程序路径和启动参数,那么这个用户登录时就会启动这个程序了,而且是杀不了的哦,被杀了之后会自动重新启动

plist文件分布在:

  1. /System/Library/LaunchDaemons/ (System-wide daemons provided by OS X)
    其中 apache的httpd程序启动配置文件 org.apache.httpd.plist 就在这里。
  2. /System/Library/LaunchAgents/ (由Mac OS X为用户定义的任务项)
  3. /Library/LaunchDaemons (由管理员定义的守护进程任务项 )
  4. /Library/LaunchAgents (由管理员为用户定义的任务项 )
    如果放到/Library/Launch Agents/下面的话,就是一开机就启动哦~
  5. ~/Library/LaunchAgents ( 由用户自己定义的任务项 )

这些配置文件由程序 launchctl 设置是否加载。
如果任务修改了,那么必须先unload,然后重新load;
launchctl start可以测试任务,这个是立即执行,不管时间到了没有;---- 测试发现没有效果。。。
执行 launchctl start 和 launchctl unload 前,任务必须先 load 过,否则报错;
launchctl stop 可以停止任务。

launchctl 简介

launchctl 管理 MacOS 的启动脚本,控制启动计算机时需要开启的服务。也可以设置定时执行特定任务的脚本,就像Linux cron一样。
launchctl需要root权限。

launchctl 常用命令

1.显示当前的启动脚本
launchctl listlaunchctl list | grep 'com.hello'  使用 grep 过滤2.开机时自动启动Apache服务器
sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist3.设置开机启动并立即启动改服务
launchctl load -w ~/Library/LaunchAgents/com.**.pist 4.设置开机启动但不立即启动服务
launchctl load ~/Library/LaunchAgents/com.**.pist 5. 移除正在运行的启动服务的脚本任务launchctl unload ~/Library/LaunchAgents/com.**.plist
6. 再加上-w选项即可去除启动服务的脚本任务launchctl unload -w ~/Library/LaunchAgents/com.**.plist

####执行定时脚本|设置开机启动步骤
在Mac上可以像在Linux上一样,使用crontab来定时运行脚本,但苹果并不推荐这个方法。苹果推荐使用Launchctl来完成定时任务。

1.写执行脚本 (通过 brew 安装软件 brew 会为我们自动生成。)
2. 去对应的目录下建立plist文件
3. 加载服务>1 cd 进入指定 plist 文件目录 >2 launchctl load *.plist #加载 launchctl unload *.plist #取消 >3 launchctl list #查看服务

####对服务设置别名方便操作
1. vim ~/.bash_profile #编辑添加如下脚本
2. 命名别名(以 nginx 为例)
>启动:alias nginx.start=’launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist’
>关闭:alias nginx.stop=’launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist’
>重启:alias nginx.restart=’nginx.stop && nginx.start’

####注意点

1. 在launchctl list 命令结果中出现的 plist 文件才会有效。
2. Agents文件夹下的plist是需要用户登录后,才会加载的,而Daemons文件夹下得plist是只要开机,可以不用登录就会被加载

####plist支持两种方式配置执行时间:

StartInterval:指定脚本每间隔多长时间(单位:秒)执行一次;
StartCalendarInterval:可以指定脚本在多少分钟、小时、天、星期几、月时间上执行,类似如crontab的中的设置,包含下面的 key:
Minute <integer> The minute on which this job will be run. Hour <integer> The hour on which this job will be run. Day <integer> The day on which this job will be run. Weekday <integer> The weekday on which this job will be run (0 and 7 are Sunday). Month <integer> The month on which this job will be run.
plist部分参数说明:

Label:对应的需要保证全局唯一性;
Program:要运行的程序;
ProgramArguments:命令语句
StartCalendarInterval:运行的时间,单个时间点使用dict,多个时间点使用 array
StartInterval:时间间隔,与StartCalendarInterval使用其一,单位为秒
StandardInPath、StandardOutPath、StandardErrorPath:标准的输入输出错误文件,这里建议不要使用 .log 作为后缀,会打不开里面的信息。
定时启动任务时,如果涉及到网络,但是电脑处于睡眠状态,是执行不了的,这个时候,可以定时的启动屏幕就好了。

launchctl 启动进程控制相关推荐

  1. launchctl java jar_MacOS launchctl 启动进程控制

    MacOS不像 Linux 有 /etc/init.d/rc.local 以及 service 的方式可以设置程序随机启动,而是使用 plist 文件管理.你可以写一个plist文件放到~/Libra ...

  2. Python 多进程笔记 — 启动进程的方式、守护进程、进程间通信、进程池、进程池之间通信、多进程生产消费模型

    1 面向过程启动多进程 Python 操作进程的类都定义在 multiprocessing 模块,该模块提供了一个 Process 类来代表一个进程对象,这个对象可以理解为是一个独立的进程,可以执行另 ...

  3. [单刷APUE系列]第八章——进程控制[1]

    目录 [单刷APUE系列]第一章--Unix基础知识[1] [单刷APUE系列]第一章--Unix基础知识[2] [单刷APUE系列]第二章--Unix标准及实现 [单刷APUE系列]第三章--文件I ...

  4. 【linux草鞋应用编程系列】_2_ 环境变量和进程控制

    一. 环境变量 应用程序在执行的时候,可能需要获取系统的环境变量,从而执行一些相应的操作. 在linux中有两种方法获取环境变量,分述如下. 1.通过main函数的参数获取环境变量 main函数的多种 ...

  5. Linux系统状态检测及进程控制--2

    Linux系统状态检测及进程控制--1(http://crushlinux.blog.51cto.com/2663646/836481) 4.僵死(进程已终止,但进程描述符存在,直到父进程调用wait ...

  6. 《嵌入式linux应用程序开发标准教程》笔记——7.进程控制开发

    进程是系统资源的最小单元,很重要. 7.1 linux进程的基本概念 定义:一个程序的一次执行过程,同时也是资源分配的最小单元.程序是静态的,而进程是动态的. 进程控制块:linux系统用进程控制块描 ...

  7. 分发器上的会话代理进程控制脚本使用说明

    分发器上的会话代理进程控制脚本使用说明 分发器上部署了三个会话代理进程: a. ans_lb_web_80 : 代理服务器的HTTP 80端口服务,WEB客户端的HTTP请求被我司的代理程序复制三份, ...

  8. 进程控制:进程的创建、终止、阻塞、唤醒和切换

    进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程.撤销已有进程.实现进程状态转换等功能.在操作系统中,一般把进程控制用的程序段称为原语,原语的特点是执行期间不允许中断,它是一个不 ...

  9. 进程控制(二)与linux下的自有服务

    一.进程动态信息查看top 第一部分 统计信息 [root@yunwei1 ~]# top top - 19:22:52 up 1:32, 2 users, load average: 0.00, 0 ...

最新文章

  1. 深度学习的“瓶颈”与“遛狗”定理
  2. Dubbo使用Zooker注册服务
  3. 一枚戒指,一场仪式,这件事阿里巴巴坚持了15年
  4. 对损失函数的总结(持续更新)
  5. *** is required and cannot be removed from the server
  6. redis rdb aof区别_10分钟彻底理解Redis的持久化机制:RDB和AOF
  7. pycharm + python36 + opencv + opencv_contrib库的安装
  8. 改变计算技术的9个伟大算法
  9. IDEA Mybatis xml中配置sql代码自动提示【必看】
  10. 东北大学OJ-1216: 实验2-6 :计算圆椎体体积
  11. foo, bar, 甲乙丙丁
  12. lzg_ad:XPE的发布与部署步骤详解
  13. 2021前端经典面试题
  14. 互联网金融VS区块链金融
  15. 酷客多荣获“2018年度中国最具创新力小程序品牌”奖
  16. LLDP协议、STP协议 笔记
  17. 【Python】python脚本实例
  18. excel插入行 uipath_UIPath入門系列三之操作Excel表格
  19. 【散文】一场白露,怎知秋心
  20. 北邮信通院C++实验课上机考试

热门文章

  1. mac Monterey 安装vmware fusion12 个人免费授权版
  2. 【不定时更新】♡随笔碎记♡
  3. HBuilderX 连接真机或者模拟器调试后不能运行ADB.exe的解决
  4. html界面遍历数组,javascript中怎么遍历数组?
  5. 后端搭建MySQL_Docker前后端分离实战之搭建MYSQL集群
  6. 我在乐字节学习前端的第三天-学习笔记:H5+CSS3面试题总结
  7. 2022年中级软件水平考试每日练习题及答案
  8. Aneka:从企业网格到面向市场的云计算
  9. magic code php,magic是什么系统
  10. HTML学习之——文字方向