如何检查已启动的进程是否从shell脚本加载到MAC OS X中?

Gov*_*kar 4 macos launchd

我有一个卸载的启动进程,我使用的命令是

launchctl unload /System/Library/LaunchDaemons/costomscript.plist

如果进程已加载,它可以正常工作.但是如果它没有加载并且我执行了命令,它会给出一条消息,说明没有加载这样的进程.所以我需要检查,如果当前加载了.plist文件,那么只有它应该被卸载,否则不会.

我怎么能做到这一点..请帮助.谢谢!!

baf*_*baf 7

您可以使用获取有关正在运行的进程的信息launchctl.

一种可能性是launchdlaunchctl list命令查询.

列表[-x] [标签]

如果没有参数,请列出在三列中加载到launchd中的所有作业.如果作业正在运行,则第一列显示作业的PID.第二列显示作业的最后退出状态.如果此列中的数字为负数,则表示杀死该作业的信号的负数.因此," - 15"表示该作业已被SIGTERM终止.第三列是作业的标签.

如果您的plist已加载,则应列出,否则不会.此外,第一列包含pid进程,因此您可以检查进程是否正在运行,例如:

$ launchctl list |grep myprocess
600 0   org.example.myprocess.1234
Run Code Online (Sandbox Code Playgroud)

还有一个launchctl print命令可以提供有关进程的详细输出.检查您是否可以使用它.

print domain-target | 服务目标

打印有关指定服务或域的信息.域输出包括关于域的各种属性以及域中具有与每个属性相关的状态的服务和端点的列表.服务输出包括服务的各种属性,包括有关其磁盘起源,当前状态,执行上下文和上次退出状态的信息.

例如:

$ launchctl print gui/501/org.example.myprocess.1234 | grep state
    state = running
Run Code Online (Sandbox Code Playgroud)