年轻人的第一个 macOS 服务项(plist)

笑死,世纪难题(

我用 macOS 也有一段时间了,而在这上面的体验,终有些不足。因为 macOS 的开发者「并不算」很多,以至于一些「特殊需求」的软件没几个能玩的。而对于我来说,又不喜欢妥协,因此就一直在寻求使用类似于 Linux 的 systemd 这类管理程序来实现一些软件的开机自启。

而当我无意间看到 macOS 有 launchd 这种管理程序的时候,我就知道,属于我们的时代来临力 ,我的想法可以实现了

准备

先普及一个知识

plist 在 macOS 上一共存在于五个文件夹中,而 Apple 给出了他们的用途

文件夹 用途
/系统/资源库/LaunchDaemons Apple 提供的系统守护进程
/系统/资源库/LaunchAgents Apple 提供的基于每个用户且所有用户适用的代理
/资源库/LaunchDaemons 第三方系统守护进程
/资源库/LaunchAgents 基于每个用户且所有用户适用的第三方代理
~/资源库/LaunchAgents 仅适用于登录用户的第三方代理

无特殊需求的话,只需要放在最后一个文件夹里就可以,同时以 User 权限运行,可以避免一些由于权限配置错误导致的问题

基本语法为

<?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>进程名</string>
    <key>ProgramArguments</key>
    <array>
        <string>运行参数</string>
    </array>
  </dict>
</plist>

这样便构成了一个基本的使用方法

一个例子

因为在 Mac 上并没有如同 Windows 一样有各种软件的客户端,一些软件可能在 Mac 上只有 Core 你说连 Core 都没有?那换个玩吧

所以我便以一个 vs 的核心为例,因为某些特殊需要,需要常驻后台来运行以及开机自启

因此就可以这么实现

nano ~/Library/LaunchAgents/verysimple.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>verysimple</string>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
    <key>ProcessType</key>
    <string>Background</string>
    <key>ProgramArguments</key>
    <array>
        <string>./verysimple</string>
        <string>-c</string>
        <string>client.toml</string>
    </array>
    <key>WorkingDirectory</key>
    <string>/Users/leaoduan/vs</string>
  </dict>
</plist>

其中,第 17 行 的 client.toml 是配置文件,第 20 行的是运行目录。
需要注意,所有包含路径的部分需要是绝对目录,可以在终端里打 pwd 查看绝对路径

然后加载这个配置文件,并启动

launchctl load ~/Library/LaunchAgents/verysimple.plist
launchctl start verysimple

然后测试,能够正常运行就代表配置成功了

取消加载、删除

如果不需要这个配置文件了,可以通过这种方式来取消加载,最后一步为删除该配置文件

launchctl stop verysimple
launchctl unload ~/Library/LaunchAgents/verysimple.plist
rm ~/Library/LaunchAgents/verysimple.plist

参考

  1. Mac - 服务管理 launchd、launchctl、LaunchAgent、LaunchDaemon、brew services详解 | Bruce's Blog

  2. Mac OS Launchd 启动服务详解_卢凯文的博客-CSDN博客_launchd

  3. Mac下使用launchctl创建定时任务 - 简书

  4. Mac使用Launchd命令行lauchctl操作服务的简单用法 - EasonJim - 博客园

  5. 在 Mac 上的“终端”中使用 launchd 管理脚本 - 官方 Apple 支持 (中国)

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇