com.apple.launchd:com.apple.launchd.peruser错误


13

我已经读了几天系统日志文件中的这些错误。

25/11/11 21:31:43,373 com.apple.launchd: (com.apple.launchd.peruser.32697[92747]) getpwuid("32697") failed
25/11/11 21:31:43,374 com.apple.launchd: (com.apple.launchd.peruser.32697[92747]) Exited with code: 1
25/11/11 21:31:43,374 com.apple.launchd: (com.apple.launchd.peruser.32697) Throttling respawn: Will start in 10 seconds

我有OSX Lion 10.7.2。
这些消息每隔几秒钟就会遍历一次,我已经对getpwuid()进行了监视,这似乎是系统调用。
我还阅读了一些有关此问题的超级用户文章:
https : //superuser.com/search?q=com.apple.launchd.peruser,
但在控制台中运行报告的命令并没有给我任何有关如何解决此问题的提示。

我已将此错误的首次出现追溯到11月20日,这是system.log文件的前几行:

Nov 20 17:22:10 MacBook-Pro com.apple.backupd[45360]: Deleted /Volumes/Time Machine/Backups.backupdb/MacBook Pro/2011-11-18-215307 (64.9 MB)
Nov 20 17:22:26 MacBook-Pro com.apple.backupd[45360]: Deleted /Volumes/Time Machine/Backups.backupdb/MacBook Pro/2011-11-18-205448 (88.3 MB)
Nov 20 17:22:26 MacBook-Pro com.apple.backupd[45360]: Post-back up thinning complete: 5 expired backups removed
Nov 20 17:22:28 MacBook-Pro com.apple.backupd[45360]: Backup completed successfully.
Nov 20 17:23:47 MacBook-Pro iCal[45376]: ServerNotifications: Setting delegate to APSD
Nov 20 17:23:47 MacBook-Pro iCal[45376]: ServerNotification: configureService called with nil password
Nov 20 17:23:55 MacBook-Pro iCal[45376]: Subscription request completed
Nov 20 17:28:47 MacBook-Pro com.apple.launchd[1] (com.apple.launchd.peruser.32697[45390]): getpwuid("32697") failed
Nov 20 17:28:47 MacBook-Pro com.apple.launchd[1] (com.apple.launchd.peruser.32697[45390]): Exited with code: 1
Nov 20 17:28:47 MacBook-Pro com.apple.launchd[1] (com.apple.launchd.peruser.32697): Throttling respawn: Will start in 10 seconds    

在此之后(确实)有大量此类消息。

有人有提示吗?


您最近是否从计算机上删除了用户帐户?打开终端并输入时会发生什么touch foo ; sudo chown 32697 foo ; ls -l foo?
— 丹尼尔·贝克


的输出是什么sudo launchctl bstree -j,它包含一行com.apple.launchd.peruser.32697吗?子元素是什么?
— 丹尼尔·贝克

touch foo的输出;须藤chown 32697 foo; ls -l foo是:触摸:foo:权限被拒绝,然后:-rw-r--r-- 1 32697工作人员0 Nov 11:55 foo
— nick2k3

确定,因此您的系统上不存在用户ID。launchctl虽然会很有趣。
— 丹尼尔·贝克

Answers:


10

每用户launchd的工作覆盖(例如,其每用户作业的用户禁用)位于子目录/private/var/db/launchd.db/,例如com.apple.launchd.peruser.501。

打开终端,查看谁拥有此目录:

ls -ld /private/var/db/launchd.db/com.apple.launchd.peruser.32697

如果所有者(第三列)不是用户名,而是数字ID,则该用户在系统上不存在(不再存在)。

您只需删除该目录即可完成。如果中有特殊规则overrides.plist,则可能有助于您了解该用户的来源和已启动的作业。


要了解launchd创建该每用户目录的时间,请输入

stat /private/var/db/launchd.db/com.apple.launchd.peruser.32697

这是最后(第四)打印的日期。


要查找系统上不是已知用户所有的所有文件,请输入

find / -nouser -ls

如果32697不是您系统上的用户(没有用户名),这可能会给您一些信息(例如,与您安装的特定应用程序相关的文件可能意味着该应用程序与您的用户设置混淆了)


“按用户启动的作业替代(例如,为用户禁用了按用户的作业)位于/private/var/db/launchd.db/的子目录中,例如com.apple.launchd.peruser.501。” 你能解释一下吗?有关启动的作业替代的任何文档?
— nick2k3 2011年

@nick From man launchctl:-w覆盖Disabled键并将其设置为false。在以前的版本中,此选项将修改配置文件。现在,Disabled键的状态存储在磁盘上的其他位置。。/.../launchd.db是“其他地方”。如果您强制加载/卸载每个用户的作业,它不会修改所有帐户使用的文件(将您的首选项强加于多用户系统上的其他用户会很愚蠢)。该目录是存储它们的地方,但是只有在自定义的情况下(例如,运行默认情况下禁用的工作,反之亦然)。这并不是真正重要的偏好。
— 丹尼尔·贝克

好的,非常感谢您的解释!
— nick2k3 2011年

6
除了删除目录,你要杀死从launchd的工作- ,,sudo launchctl stop com.apple.launchd.peruser.32697sudo launchctl unload com.apple.launchd.peruser.32697sudo launchctl remove com.apple.launchd.peruser.32697
— 道格·哈里斯

感谢Doug,最后三个命令集阻止了该命令持续运行。
— ConstantineK'2
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.