【问题标题】:Detect if running under launchd检测是否在launchd下运行
【发布时间】:2014-03-12 07:42:23
【问题描述】:

如何检测我在 Mac OS X 上的 launchd 下作为 LaunchAgent 运行?

这适用于需要重启的程序(用 Go 编写)。如果它是从终端或初始化脚本启动的,它需要自己执行此操作。如果在服务管理器下运行,则不应尝试重新启动,而只需退出并由管理器重新启动。

例如,在 Solaris SMF 下运行时,设置了环境变量 SMF_FMRI,但我在 launchd 中没有看到类似的内容。

有明显的解决方法(需要使用命令行标志或设置环境变量),但我对“自动”解决方案感兴趣。

(这不是类似的问题How to check if launchd has started the script?的重复)

【问题讨论】:

    标签: macos launchd


    【解决方案1】:

    获取您的父进程 ID (PPID) 并将其与 launchd 的 PID 进行比较。

    在屏幕截图中,您可以看到launchd's PID 为 41840(红色),mdflagwriterdistnotedcfprefsd(蓝色)的 PPID 与该数字匹配,因此它们是由 @ 发起的987654326@.

    【讨论】:

    • 太棒了!但愿如此。我从来没有在 OSX 上尝试过,但那是我在 Solaris、IRIX、HP-UX 上经常做的事情。如果进展顺利,也许可以添加评论,所以我们都学到了一些东西!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    • 2010-09-06
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    相关资源
    最近更新 更多