启动的作业不在列表中,但仍在运行

启动的作业不在列表中,但仍在运行

我有一个每两分钟运行一次的启动作业,但它不在sudo launchctl list

我正在更改 plist 文件,包括文件名和 Label 键。我事先没有卸载它,而是加载了新命名的文件。也许这就是导致这种情况的原因,但我仍然希望它在列表中。

但它从来没有在sudo launchctl list名单上。我cron也检查过了,以防万一。

我检查了其他用户。我看到启动作业每两分钟运行一次的脚本ps aux。有什么方法可以ps aux查看哪个启动进程生成了该脚本吗?

我还能做什么来阻止这件事?重新启动服务器必须是最后的手段,重新启动 launchd 也是如此,但如果这是唯一的选择,那就是唯一的选择。

还有这个问题,但是没人回答:https://apple.stackexchange.com/questions/240550/weird-launchd-behaviour-process-still-running-after-deleting-launchd-file-and-r

答案1

有什么方法可以用来ps aux查看哪个 launchd 进程产生了它?

如果您使用ps -ef,则每行的前 3 个条目会告诉您进程的 UID、PID 和父 PID。以下是示例:

$  ps -ef|head -2
  UID   PID  PPID   C STIME   TTY           TIME CMD
    0     1     0   0 30May16 ??        25:05.63 /sbin/launchd

通过这三者,您应该能够找出您正在寻找的进程的来源。下面是一个相当明显的例子,我正在查看softwareupdated(的守护进程softwareupdate):

首先,我查找该进程,然后使用 进行确认ps -ef <some_PID>。我已经养成了以 结束搜索的习惯,以grep -v grep将 grep 从结果中排除

$  ps -ef|grep softwareupdated|grep -v grep
  200  3711     1   0 30May16 ??         6:45.49 /System/Library/CoreServices/Software Update.app/Contents/Resources/softwareupdated
$  ps -ef 3711
  UID   PID  PPID   C STIME   TTY           TIME CMD
  200  3711     1   0 30May16 ??         6:45.49 /System/Library/CoreServices/Software Update.app/Contents/Resources/softwareupdated

父 PID 是有编号的1,因此我检查:

$  ps -ef 1
  UID   PID  PPID   C STIME   TTY           TIME CMD
    0     1     0   0 30May16 ??        25:08.24 /sbin/launchd

相关内容