Mac 后台服务

Mac 的后台服务通过launchctl工具实现(也可以使用linux下的crontab),但官方建议使用launchctl
使用launchctl非常简单,根据需要编写plist脚本即可。plist脚本存放路径为/Library/LaunchDaemons或/Library/LaunchAgents,其区别是后一个路径的脚本当用户登陆系统后才会被执行,前一个只要系统启动了,哪怕用户不登陆系统也会被执行。

个人的plist存放位置:

可以通过brew services list查看

Name          Status  User         Plist
elasticsearch stopped
mysql@5.7     started longxingjian /Users/longxingjian/Library/LaunchAgents/homebrew.mxcl.mysql@5.7.plist
redis         started longxingjian /Users/longxingjian/Library/LaunchAgents/homebrew.mxcl.redis.plist

plist样例(redis服务)

<?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>KeepAlive</key>
    <dict>
      <key>SuccessfulExit</key>
      <false/>
    </dict>
    <key>Label</key>
    <string>homebrew.mxcl.redis</string>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/local/opt/redis/bin/redis-server</string>
      <string>/usr/local/etc/redis.conf</string>
      <string>--daemonize no</string>
    </array>
    <key>RunAtLoad</key>
    <false/>
    <key>WorkingDirectory</key>
    <string>/usr/local/var</string>
    <key>StandardErrorPath</key>
    <string>/usr/local/var/log/redis.log</string>
    <key>StandardOutPath</key>
    <string>/usr/local/var/log/redis.log</string>
  </dict>
<

说明:
+
<key>RunAtLoad</key> <false/>
选项表示是否在系统加载的时候就启动服务,我将redis服务在自己的机器上设置为否(因为我只做测试使用平时不需要redis服务)。
+
<key>KeepAlive</key>
选项表示是否该服务是否一直运行

手动起停服务(以ssh服务为例)

开启ssh服务

$ sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist 

关闭ssh服务

$ sudo launchctl unload  /System/Library/LaunchDaemons/ssh.plist 

常用命令

brew services list  # 查看使用brew安装的服务列表
brew services run formula|--all  # 启动服务(仅启动不注册)
brew services start formula|--all  # 启动服务,并注册
brew services stop formula|--all   # 停止服务,并取消注册
brew services restart formula|--all  # 重启服务,并注册
brew services cleanup  # 清除已卸载应用的无用的配置

配置文件目录

/Library/LaunchDaemons # 开机自启,需要sudo
~/Library/LaunchAgents # 用户登录后自启

Reference

使用brew services管理服务
Mac 开机自启动配置设置方法(定时任务解决方案)
Apple Developer官方文档:About Daemons and Services

posted @ 2020-01-19 15:57  lllunaticer  阅读(1060)  评论(0编辑  收藏  举报