精华内容
下载资源
问答
  • launchctl

    2019-09-21 21:52:31
    Launchctl 系统启动时, 系统会以root用户的身份扫描/System/Library/LaunchDaemons和/Library/LaunchDaemons目录, 如果文件中有Disable的值为true, 则不会load进来, 否则就会load进来, 相当于执行了launchctl load ...

    Launchctl

    • 系统启动时, 系统会以root用户的身份扫描/System/Library/LaunchDaemons和/Library/LaunchDaemons目录, 如果文件中有Disable的值为true, 则不会load进来, 否则就会load进来, 相当于执行了launchctl load -w path
    • 用户登录时, 该用户会扫描/System/Library/LaunchAgent, /Library/LaunchAgent 和 ~/Library/LaunchAgent目录下的plist文件, 是否加载load取决于Disable键的值
    • launchd的load与start是不一样的, 取决于RunAtLoad键的值, 如果true, 则表示load之后立马启动
    • 一个简单的plist文件需要有Label(域名反写, 会在Launchctl list显示出来), Program, ProgramArguments, RunAtLoad(为true表示load时启动), Disable, StandardInPath, StandardOutPath, StandardErrorPath, StartInterval(几秒钟执行一次), WorkdingDirectory(临时目录是哪个)
    • launchctl load ... ; launchctl unload ... ; launchctl start ... ; launchctl stop
    • 如果配置文件中指明了Disable的话, 则需要-F强制load
    • 使用LaunchControl工具, 配置起来方便

    转载于:https://www.cnblogs.com/megachen/p/9692561.html

    展开全文
  • launchctl 命令提供本机绑定 注意 由于 OS X 10.10 的launchd源代码不再可用,该项目的开发已停止。 如果其他人对维护它感兴趣,请不要犹豫,让我知道。 它已经过以下版本的测试: 0.8.26 0.10.x 0.11.13(为...
  • Launchctl介绍

    千次阅读 2018-01-07 11:59:55
    Launchctl Launchctl :控制OS X系统里的启动进程(launch) 2.1 执行定时脚本|设置开机启动步骤 (1)编写执行脚本 通常brew在安装软件时brew为我们自动生成。 (2)去对应的目录下建立plist文件 (3)加载服务 2.2 ...

    Launchctl
    Launchctl :控制OS X系统里的启动进程(launch)
    2.1 执行定时脚本|设置开机启动步骤
    (1)编写执行脚本
    通常brew在安装软件时brew为我们自动生成。
    (2)去对应的目录下建立plist文件
    (3)加载服务

    2.2 plist指定目录介绍
    - ~/Library/LaunchAgents 由用户自己定义的任务项
    - /Library/LaunchAgents 由管理员为用户定义的任务项
    - /Library/LaunchDaemons 由管理员定义的守护进程任务项
    - /System/Library/LaunchAgents 由Mac OS X为用户定义的任务项
    说明:Agents文件夹下的plist是需要用户登录后,才会加载的,而Daemons文件夹下得plist是只要开机,可以不用登录就会被加载

    2.3 加载/卸载服务
    cd 进入指定 plist 文件 目录
    launchctl load *.plist #加载
    launchctl unload *.plist #取消
    launchctl list #查看服务

    launchctl load -w   **.pist #设置开机启动并立即启动改服务
    

    launchctl load **.pist #设置开机启动但不立即启动服务
    2.4 对服务设置别名方便操作
    vim ~/.bash_profile #编辑添加如下脚本
    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’
    alias php-fpm.start=”launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php55.plist”
    alias php-fpm.stop=”launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.php55.plist”
    alias php-fpm.restart=’php-fpm.stop && php-fpm.start’
    alias mysql.start=”launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist”
    alias mysql.stop=”launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist”
    alias mysql.restart=’mysql.stop && mysql.start’
    alias redis.start=”launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.redis.plist”
    alias redis.stop=”launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.redis.plist”
    alias redis.restart=’redis.stop && redis.start’
    alias memcached.start=”launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.memcached.plist”
    alias memcached.stop=”launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.memcached.plist”
    alias memcached.restart=’memcached.stop && memcached.start’

    展开全文
  • launchctl定时任务

    2020-03-08 15:22:53
    最近做个一个定时任务的golang程序,需要每10分钟运行一次,使用了launchctl,整理了一篇文章方便记忆。 一、plist文件 launchctl是根据plist文件的内容来执行任务的。 plist又根据存放的目录不同而启动的时机不同,...

    最近做个一个定时任务的golang程序,需要每10分钟运行一次,使用了launchctl,整理了一篇文章方便记忆。

    一、plist文件

    launchctl是根据plist文件的内容来执行任务的。

    plist又根据存放的目录不同而启动的时机不同,如下:

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

    /Library/LaunchAgents为例,在/Library/LaunchAgents目录下创建com.demo.plist文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
      <!-- Label唯一的标识 -->
      <key>Label</key>
      <string>com.demo.plist</string>
      <!-- <key>Program</key>
      <string>/Users/xxx/go/bin/pachong</string> -->
      <!-- 指定要运行的脚本 -->
      <key>ProgramArguments</key>
      <array>
        <string>/Users/xxx/go/bin/pachong</string>
      </array>
      <!-- 指定要运行的时间 -->
      <!-- <key>StartCalendarInterval</key>
            <dict>
                <key>Minute</key>
                <integer>00</integer>
    
                <key>Hour</key>
                <integer>8</integer>
    
                <key>Day</key>
                <integer>1</integer>
            </dict> -->
      <!-- 指定要运行的时间 -->
      <key>StartInterval</key>
      <integer>600</integer>
    <!-- 标准输出文件 -->
    <key>StandardOutPath</key>
    <string>/Users/x x x/go/src/pachong/run.log</string>
    <!-- 标准错误输出文件,错误日志 -->
    <key>StandardErrorPath</key>
    <string>/Users/xxx/go/src/pachong/run.err</string>
    </dict>
    </plist>
    
    • Label: 任务的唯一标识
    • ProgramArguments: 命令语句, 第一个
    • Program: 要运行的程序, 如果省略该参数,ProgramArguments的第一个数据作为运行程序
    • StartInterval: 时间隔间,单位秒
    • StartCalendarInterval: 运行的时间,与StartInterval只能使用其中一个
    • StandardOutPath: 标准输出文件
    • StandardErrorPath: 错误输出文件

    启动命令

    plist文件编写好之后,先加载plist文件,

    launchctl load -w com.demo.plist
    

    -w会覆盖掉plist文件中无效的部分

    删除任务

    launchctl unload -w com.demo.plist
    

    开始任务

    立即执行任务,即使时间没到

    launchctl start  com.demo.plist
    

    结束任务

    launchctl stop   com.demo.plist
    

    工具

    推荐一款launchctl边界工具LaunchControl

    在这里插入图片描述

    • 左边可以看到脚本的状态
    • 有错误时可以点击修复脚本
    • 可视化编辑plist文件
    展开全文
  • mac launchctl 守护进程

    2020-12-30 22:40:13
    launchctl 守护进程 pm2 重启 现在nodejs很多应用是用pm2部署的,pm2自带能够自重启的功能 设置步骤 先用pm2启动应用 pm2 start ./dist/client/ --watch --ignore-watch="node_modules" 然后用pm2 status 查看该...

    需求

    我们有一些场景需要服务器,比如一台mac重启后自动启动某些应用,比如自重启服务器数据库,此时,我们可以用以下办法:

    1. pm2 重启
    2. launchctl 守护进程

    pm2 重启

    现在nodejs很多应用是用pm2部署的,pm2自带能够自重启的功能

    设置步骤

    1. 先用pm2启动应用
    pm2 start ./dist/client/ --watch --ignore-watch="node_modules"
    

    然后用pm2 status 查看该应用是否显示正常

    pm2 status
    
    1. pm2 startup
      在终端执行pm2 startup,会输出如下:
    [PM2] Init System found: launchd
    [PM2] To setup the Startup Script, copy/paste the following command:
    sudo env PATH=$PATH:/usr/local/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup launchd -u tuxiuluo --hp /Users/tuxiuluo
    
    1. 此时,按照提示,复制上一步骤出现的一行命令,在终端执行
      在终端执行:
    sudo env PATH=$PATH:/usr/local/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup launchd -u tuxiuluo --hp /Users/tuxiuluo
    

    如果正常,终端会输出:

    [PM2] Init System found: launchd
    Platform launchd
    Template
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
      <dict>
    	  <key>Label</key>
    	  <string>com.PM2</string>
    	  <key>UserName</key>
    	  <string>tuxiuluo</string>
        <key>KeepAlive</key>
        <true/>
    	  <key>ProgramArguments</key>
    	  <array>
    		  <string>/bin/sh</string>
    		  <string>-c</string>
    		  <string>/usr/local/lib/node_modules/pm2/bin/pm2 resurrect</string>
    	  </array>
    	  <key>RunAtLoad</key>
    	  <true/>
    	  <key>OnDemand</key>
    	  <false/>
    	  <key>LaunchOnlyOnce</key>
    	  <true/>
    	  <key>EnvironmentVariables</key>
        <dict>
          <key>PATH</key>
          <string>/usr/local/bin</string>
          <key>PM2_HOME</key>
          <string>/Users/tuxiuluo/.pm2</string>
        </dict>
    	  <key>StandardErrorPath</key>
    	  <string>/tmp/com.PM2.err</string>
    	  <key>StandardOutPath</key>
    	  <string>/tmp/com.PM2.out</string>
      </dict>
    </plist>
    
    Target path
    /Users/tuxiuluo/Library/LaunchAgents/pm2.tuxiuluo.plist
    Command list
    [
      'launchctl load -w /Users/tuxiuluo/Library/LaunchAgents/pm2.tuxiuluo.plist'
    ]
    [PM2] Writing init configuration in /Users/tuxiuluo/Library/LaunchAgents/pm2.tuxiuluo.plist
    [PM2] Making script booting at startup...
    >>> Executing launchctl load -w /Users/tuxiuluo/Library/LaunchAgents/pm2.tuxiuluo.plist
    [DONE]
    +---------------------------------------+
    [PM2] Freeze a process list on reboot via:
    $ pm2 save
    
    [PM2] Remove init script via:
    $ pm2 unstartup launchd
    
    1. 可以看到,其实,这是利用了launchctl设置了一个自启动的应用

    设置的自启动的配置文件路径在/Users/tuxiuluo/Library/LaunchAgents/pm2.tuxiuluo.plist

    launchctl 守护进程

    launchctl定义

    launchctl经常可以用来做定时任务,英文解释如下:

    In computing, launchd, a unified operating system service management framework, starts, stops and manages daemons, applications, processes, and scripts in macOS. It was introduced with Mac OS X Tiger and is licensed under the Apache License.— Wikipedia

    英文官网地址

    核心是定义一系列的自启动应用配置文件

    Type Lacation Run on behalf of
    User Agents ~/Library/LaunchAgents Current logged in user
    Global Agents /Library/LaunchAgents Current logged in user
    Global Daemons /Library/LaunchDaemons root or the user sepcified with the key UserName
    System Agents /System/Library/LaunchAgents Current logged in user
    System Daemons /System/Library/LaunchDaemons root or the user sepcified with the key UserName

    启动顺序如下:

    1. 电脑启动,在未登录时,系统会扫描/System/Library/LaunchDaemons/ and /Library/LaunchDaemons/里面的配置
    2. 用户登录进来时,系统会扫描/System/Library/LaunchAgents, /Library/LaunchAgents, 以及用户的目录:~/Library/LaunchAgents directory里面的配置

    有第一小节我们可以看到,pm2的自启动放在了User Agents

    launchctl配置步骤

    接下来我们自己自制一个自启动应用,用来每次启动电脑打印一次ls -al ~

    去~/Library/LaunchAgents新建一个配置文件,名字叫做com.startup.test.plist,配置如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
      <dict>
    	  <key>Label</key>
    	  <string>com.startup.test</string>
    	  <key>UserName</key>
    	  <string>tuxiuluo</string>
        <key>KeepAlive</key>
        <true/>
    	  <key>ProgramArguments</key>
    	  <array>
    		  <string>/bin/sh</string>
    		  <string>ls -al ~</string>
    	  </array>
    	  <key>RunAtLoad</key>
    	  <true/>
    	  <key>OnDemand</key>
    	  <false/>
    	  <key>LaunchOnlyOnce</key>
    	  <true/>
    	  <key>StandardErrorPath</key>
    	  <string>/Users/tuxiuluo/com.startup.test.err</string>
    	  <key>StandardOutPath</key>
    	  <string>/Users/tuxiuluo/com.startup.test.out</string>
      </dict>
    </plist>
    
    

    接着输入命令

    launchctl load -w /Users/tuxiuluo/Library/LaunchAgents/com.startup.test.plist
    

    接着,查看已装载的列表:

    launchctl list
    

    接着,重启电脑去/Users/tuxiuluo/com.startup.test.out查看有没有正确的输出

    遇到的坑

    权限问题

    经过试验,设置在/Library/LaunchAgents的plist文件,权限需要是:

    root:wheel,而且可执行权限时600,不然的话,设置了会没反应

    sudo chown root:wheel /Library/LaunchDaemons/myfile.plist
    sudo chmod 600 /Library/LaunchDaemons/myfile.plist
    
    展开全文
  • lunchy一个友好的launchctl包装
  • Launchctl的友好包装器。 开始您的经纪人,共进午餐! 您不讨厌OSX的launchctl吗? 您必须给它提供确切的文件名,语法与Linux的语法令人讨厌,而且过于冗长。 它不是一个非常适合开发人员的工具。 Lunchy的目标是...
  • launchctl :MAC 下的定时任务

    万次阅读 2018-09-25 19:37:26
    launchctl 是一个统一的服务管理框架,可以启动、停止和管理进程、应用程序、脚本等。 launchctl 可以通过 plist 文件来指定执行周期性任务。 查看已存在的任务 ~/Library/LaunchAgents :由用户自己定义的任务项...
  • osx使用launchctl添加定时任务 近期想做一个每天都要检查的脚本,然后发送执行结果信息到通知里。 其实思路很简单,就是写脚本,然后加入到launchctl里。 在这个过程中踩了几个坑,所以记录一下。 脚本对应的plist...
  • mac定时任务launchctl list查看status是126是什么问题这个是 bash 的 status code,一般是权限问题,或目标并非一个可执行文件或没有赋予可执行权限OS X的launchctl怎么用才好用首先做一个可执行的脚本,脚本名字...
  • MongoDB OSX Snow Leopard Launchctl 项目 配置 MongoDB 在 Mac OSX 系统启动时启动。 蒙戈安装 本指南假设您已经使用 MacPorts 安装了 mongo,如下所示: sudo port install mongo Mongo 守护进程的位置假定为/...
  • Launchctl - mac下的运行管理器

    千次阅读 2016-03-06 11:55:38
    前面的文章提到了 launchctl,我就根据这个线索整理一下。launchctl 是 launchd的控制台(也就是人机交互的终端)用于装载进程、卸载进程并控制launchd。launchctl 也就是launchd的封面,这么说是为了避免让人感到...
  • Mac中的定时任务利器:launchctl 本文转载自Mac中的定时任务利器:launchctl 简介 launchctl是一个统一的服务管理框架,可以启动、停止和管理守护进程、应用程序、进程和脚本等。 launchctl是通过配置文件...
  • Mac执行定时任务之Launchctl

    千次阅读 2017-07-06 14:20:17
    launchctl是一个统一的服务管理框架,启动、停止和管理守护进程、应用程序、进程和脚本。下面讲述一下如何在Mac上使用launchctl执行定时任务。 一、编写一个plist文件launchctl 将根据这个plist文件的信息来启动任务...
  • Mac 设置自动执行定时任务, 步骤: 1. 编写plist 2.将plist放入该目录下 ...~/Library/LaunchAgents ...添加: launchctl load /System/Library/LaunchAgents/...移除: launchctl unload /System/Library/Launc...
  • launchctl是一个统一的服务管理框架,启动、停止和管理守护进程、应用程序、进程和脚本。 我们一般使用其定时执行任务,例如在某一时间执行脚本 编写定时任务 plist文件 新建一个plist文件 ...
  • 使用macOS的launchctl守护程序管理器管理后台服务。 要求 用于安装服务。 这在Linux上不能(也不能)与Homebrew一起使用(请不要提交Linux问题)。 安装 首次运行时会自动安装brew services 。 用法 请参阅或“ ...
  • 在linux下可以用crontab来定时执行任务,在MAC下可以用launchctl来定时执行任务。 我们使用launchctl来做一个定时执行任务的例子。 首先做一个可执行的脚本,脚本名字叫做:AutoMakeLog.sh,脚本的功能就是在/...
  • 一个 launchctl 的包装器,灵感来自 gem 。 为什么选择EZservices ? 因为lunchy 不能同时启动/停止/重启多个LaunchAgents,你需要运行多个命令来实现这一点。 (来自午餐描述)你不讨厌 OSX 的 launchctl 吗? 你...
  • mac使用launchctl定时运行程序

    千次阅读 2016-12-05 16:57:31
    在linux下可以用crontab来定时执行任务,在mac下可以用launchctl来定时执行任务  我们使用launchctl来做一个定时执行任务的例子  首先做一个可执行的脚本,脚本名字叫做:  run123.sh,脚本的功能就是在/...
  • 项目要点: 通过python读取并解析每日指定邮件内容 ...文章目录1 项目代码解析1.1 数据库1.1.1 MySQL配置1.1.2 MySQL类1.1.3 SSH隧道连接MySQL1.2 邮箱1.2.1 连接邮箱1.2.2 内容解析1.3 定时任务 Launchctl1.3.1 ...
  • mkdir -p ~/Library/LaunchAgents cp /usr/local/Cellar/mongodb/2.0.6-x86_64/homebrew.mxcl.mongodb.plist ~/Library/LaunchAgents/ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist laun
  • 使用launchctl开机自启动1中的脚本 环境 mac osx 10.14.6 vim8 配置文件为SpaceVim emacs 配置文件为seagle0128 脚本 mount-ram-vim.sh 创建内存镜像挂载点 #!/bin/sh # This program has two feature. ..

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,144
精华内容 1,257
关键字:

launchctl