3

[Mac]使用launchd管理系统后台服务

 3 years ago
source link: https://sexywp.com/use-launchd-to-manage-system-services.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

[Mac]使用launchd管理系统后台服务

Charles 2020/12/170

Mac 系统使用 launchd 系列服务和命令来管理系统后台注册的程序,这对不懂技术的人来说,不是十分友好。当然,一般注册在这个层面的服务,也应该是那些不需要用户搞清楚,就能坐享其成的服务。

最近,我安装了新版本的 Photoshop,之前我一直用的是 Photoshop 2015 CC,很不错,也支持了视网膜屏幕,足够用了。不过后来老爸说他也想装一个,我就下载了个 Photoshop 2021,我试装一下,安装成功了。不曾想,给系统带来了一个讨厌的服务。Adobe Creative Cloud。

这是一个很有用的服务,但是顾名思义,是一个云端的服务,其实,一般我们就是对照片调整个亮度,或者扣个图,拼个图什么的,不会用到高端的 Adobe Creative Cloud,可是这个服务十分霸道地在开机自动启动,出现在顶部菜单栏上,占了一个小图标的位置,鼠标点击就弹出登录框,右键也无法退出。通过系统设置里的“登录项”,也不能配置“开机不自动启动”。按照经典的定义,这就是“流氓软件”了。怎样才能在禁用 Adobe Creative Cloud 呢?让它不要开机自动启动?

回归咱们的主题。

使用命令launchctl list 可以罗列出,系统当前在运行的服务清单,赫然可以看到 com.adobe.AdobeCreativeCloud 在列,正在运行,进程 ID 513。这个 com.adobe.AdobeCreativeCloudlaunchd 系列里的概念叫 Label。

使用命令 launchctl list com.adobe.AdobeCreativeCloud 可以查看这个服务的一些配置信息,可以里面有这个服务启动的程序所在的目录,启动参数等。

如果我想把一个服务注册到系统服务里,使用命令 launchctl load 就可以做到,当然,还需要编写一个配置文件,在 Mac 系统里,是一种叫 plist 的格式(满足 XML 规范)。

如果我想要把一个服务注销掉,使用命令 launchctl unload <plist_path> 就可以做到。在上面,我们通过 launchctl list 命令找到了 com.adobe.AdobeCreativeCloud 这个 Label,怎么才能找到其配置文件呢?使用 locate com.adobe.AdobeCreativeCloud 命令,这是 *nix 系列系统的常见命令,相当于搜索。当然,首次使用的时候,还有一些麻烦,就是要建立索引,不过,Mac 系统的 Terminal 执行此命令,一般会提示如何建立索引的。照着执行便可。个人觉得比 Spotlight 要好用一点。

launchctl unload -w /Library/LaunchAgents/com.adobe.AdobeCreativeCloud.plist
launchctl unload -w /Library/LaunchAgents/com.adobe.AdobeCreativeCloud.plist

找到那个 com.adobe.AdobeCreativeCloud 所在的 plist 配置文件的路径后,我们就可以用 launchctl unload <plist_path> 来卸载这个服务了。以后也不会开机自动启动了。

个人觉得,一个会打扰客户的显性的服务,一般应该让客户来配置是否开机自动启动。当然,为了软件的活跃,你可以强行默认启用,但是应该允许客户来手动禁用。这种利用技术优势,直接不允许退出,不允许禁用的“流氓”行为,我们要坚决抵制。做软件服务,凭服务质量和商业价值赚钱,吃相不能这么难看。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK