欢迎各位兄弟 发布技术文章
这里的技术是共享的
禁用或删除启动项 见 /node-admin/21200
在macOS中,通过终端(Terminal)查看启动项是一种较为高级且直接的方法,特别是当你需要深入了解系统底层的自启动服务时。启动项在macOS中通常以.plist
文件的形式存在,这些文件位于特定的系统文件夹中。以下是通过终端查看启动项的具体步骤:
# launchctl list #查看启动项列表
打开终端:
在Finder中,前往/Applications/Utilities
文件夹,然后双击打开Terminal
应用程序。
查看启动项文件夹:
/Library/LaunchDaemons
:系统启动时运行,用户不登录也会运行。
/Library/LaunchAgents
:用户登录后运行,但会由系统为每个用户加载。
~/Library/LaunchAgents
(~
代表用户的主目录):用户自定义的启动项,仅针对当前用户。
/System/Library/LaunchDaemons
和/System/Library/LaunchAgents
:系统自带的启动项,通常不建议修改。
macOS中的启动项主要存储在几个不同的LaunchAgents
和LaunchDaemons
文件夹中。这些文件夹的位置如下:
列出文件夹内容:
使用ls
命令列出上述文件夹中的.plist
文件。例如,要查看/Library/LaunchAgents
文件夹中的文件,可以输入以下命令:
bash复制代码ls /Library/LaunchAgents
这将列出该文件夹中所有的.plist
文件,每个文件都代表一个启动项。
查看.plist
文件内容:
要查看特定.plist
文件的内容,可以使用cat
、less
或more
等命令。例如,要查看名为com.example.service.plist
的文件内容,可以输入:
bash复制代码cat /Library/LaunchAgents/com.example.service.plist
或者使用plutil
命令以更友好的方式打印.plist
文件内容:
bash复制代码plutil -p /Library/LaunchAgents/com.example.service.plist
权限问题:访问某些系统文件夹(如/System/Library/
)时可能需要管理员权限。如果遇到权限问题,可以尝试在命令前加上sudo
来获取超级用户权限。
安全性:修改或删除系统文件夹中的文件可能会影响系统的稳定性和安全性。在进行任何更改之前,请确保您完全了解所做更改的后果,并考虑进行备份。
透明度:与通过系统设置管理登录项相比,通过终端查看启动项提供了更高的透明度和灵活性,但也需要更高的技术知识和经验。
通过终端查看macOS的启动项是了解系统自启动服务的一种有效方法。通过访问特定的系统文件夹并使用ls
、cat
和plutil
等命令,您可以列出和查看这些启动项的配置文件(.plist
文件)。然而,请注意在进行任何更改之前要谨慎行事,并确保您了解所做更改的潜在影响。
macos /Library/LaunchDaemons 与 /Library/LaunchAgents 区别
在macOS系统中,/Library/LaunchDaemons
和 /Library/LaunchAgents
是两个用于存放系统级启动项(守护进程)的目录,它们之间存在一些关键的区别。以下是这两个目录的主要区别:
/Library/LaunchDaemons:
这个目录用于存放系统启动时即运行的守护进程(daemons),无论用户是否登录。
这些守护进程通常以root用户身份运行,因为它们需要在系统级别上执行任务,如网络服务、系统监控等。
Apple和第三方系统级软件可能会将它们的守护进程plist文件放在这里。
/Library/LaunchAgents:
这个目录用于存放用户登录后启动的代理(agents)和守护进程(虽然这里的守护进程在用户登录后启动,但它们仍被视为“代理”的一种)。
这些进程通常以当前登录用户的身份运行,执行与用户会话相关的任务。
用户级软件和某些系统级软件可能会将它们的启动项plist文件放在这里,特别是那些需要用户交互或依赖于用户会话的软件。
/Library/LaunchDaemons 中的进程以root用户身份运行,具有更高的权限。
/Library/LaunchAgents 中的进程以当前登录用户的身份运行,权限相对较低。
/Library/LaunchDaemons 中的进程在系统启动时或用户登录之前就开始运行。
/Library/LaunchAgents 中的进程在用户登录后启动。
无论是 /Library/LaunchDaemons
还是 /Library/LaunchAgents
,它们都使用plist(属性列表)文件来配置守护进程和代理的启动参数。
plist文件中包含了控制守护进程或代理行为的关键属性,如KeepAlive
、RunAtLoad
和SuccessfulExit
等。
使用launchctl
命令可以管理(加载、卸载、启动、停止等)这些plist文件对应的守护进程和代理。
/Library/LaunchDaemons | /Library/LaunchAgents | |
---|---|---|
功能 | 系统启动时运行的守护进程 | 用户登录后运行的代理和守护进程 |
权限和用户 | 以root用户身份运行 | 以当前登录用户身份运行 |
启动时机 | 系统启动时或用户登录前 | 用户登录后 |
管理和配置 | 使用plist文件和launchctl命令 | 使用plist文件和launchctl命令 |
了解这些区别有助于在macOS系统上更有效地管理和配置启动项,确保系统的稳定性和性能。
launchctl list 是查看 /Library/LaunchDaemons 下的 还是 /Library/LaunchAgents 下的启动进程
launchctl list
命令本身并不直接区分是查看 /Library/LaunchDaemons
还是 /Library/LaunchAgents
目录下的启动进程。实际上,launchctl list
命令会列出当前系统上所有由 launchd
管理的作业(包括守护进程、代理、定时任务等),这些作业可能来自 /Library/LaunchDaemons
、/Library/LaunchAgents
、~/Library/LaunchAgents
(用户级别的代理)以及通过其他方式(如通过编程方式注册)添加的作业。
然而,你可以使用 launchctl list
命令的不同选项来过滤或指定你想要查看的作业类型。但是,请注意,直接通过选项来区分 /Library/LaunchDaemons
和 /Library/LaunchAgents
的作业并不是 launchctl list
命令直接提供的。不过,你可以通过其他方式来间接识别这些作业的来源:
查看作业的标识符(Label):通常,/Library/LaunchDaemons
下的作业标识符会以系统级域的方式命名(如 com.apple.something
),而 /Library/LaunchAgents
下的作业(特别是第三方软件添加的)可能会包含更具体的软件名称或开发者信息。但这并不是绝对的,因为标识符的命名规则可以由开发者自定义。
使用 launchctl list
的 -r
(或 --regex
)选项配合正则表达式来过滤特定的作业。但是,这需要你知道作业标识符的一部分或全部,以便构建有效的正则表达式。
通过查看 /Library/LaunchDaemons
和 /Library/LaunchAgents
目录下的 plist 文件,你可以了解哪些守护进程和代理被配置为在系统上运行。然后,你可以使用 launchctl list
命令来验证这些作业是否正在运行。
如果你想要专门查看 /Library/LaunchDaemons
或 /Library/LaunchAgents
目录下的所有 plist 文件(而不仅仅是当前运行的作业),你可以使用 ls
命令或 find
命令来列出这些目录下的文件。例如:
bash复制代码ls /Library/LaunchDaemons ls /Library/LaunchAgents
或者,如果你想要递归地查找并列出所有相关的 plist 文件(包括可能位于子目录中的文件),你可以使用 find
命令:
bash复制代码find /Library/LaunchDaemons -type f -name "*.plist" find /Library/LaunchAgents -type f -name "*.plist"
但是,请记住,这些命令只是列出了 plist 文件,而不是 launchd
当前正在管理的作业状态。要获取作业状态,你仍然需要使用 launchctl list
命令。