com.apple.launchd: erro com.apple.launchd.peruser

13

Faz alguns dias que estou lendo esses erros no arquivo de log do sistema.

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

Eu tenho o OSX Lion 10.7.2.
Essas mensagens são repetidas a cada poucos segundos, eu goggled getpwuid () e parece ser uma chamada de sistema.
Também li algumas postagens de superusuário sobre esse problema:
/superuser//search?q=com.apple.launchd.peruser,
mas a execução dos comandos relatados no console não me deu nenhuma dica sobre como resolver esse problema .

Rastreei a primeira aparição desse erro até 20 de novembro. Aqui estão as linhas anteriores do arquivo 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    

Depois disso, existem (realmente) toneladas de mensagens desse tipo.

Alguém tem alguma dica?

nick2k3
fonte
Você excluiu recentemente uma conta de usuário da sua máquina? O que acontece quando você abre o terminal e entra touch foo ; sudo chown 32697 foo ; ls -l foo?
Daniel Beck
Qual é a saída de sudo launchctl bstree -j, contém uma linha com.apple.launchd.peruser.32697? Quais são os elementos filhos?
Daniel Beck
a saída de touch foo; sudo chown 32697 foo; ls -l foo é: touch: foo: permissão negada e, em seguida: -rw-r - r-- 1 32697 staff 0 26 Nov 11:55 foo
nick2k3
OK, para que o ID do usuário não exista no seu sistema. launchctlseria interessante embora.
Daniel Beck

Respostas:

10

As launchdsubstituições de tarefas por usuário (por exemplo, quais tarefas por usuário estão desabilitadas para um usuário) estão localizadas em subdiretórios de /private/var/db/launchd.db/, por exemplo com.apple.launchd.peruser.501.

Abra o Terminal e veja quem possui este diretório:

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

Se o proprietário (terceira coluna) não for um nome de usuário, mas um ID numérico, esse usuário não existe (mais) no seu sistema.

Você pode simplesmente remover esse diretório e terminar com ele. Se houver regras especiais no overrides.plist, isso poderá ajudá-lo a entender a origem desse usuário e os trabalhos launchd.


Para descobrir quando esse launchddiretório por usuário foi criado, digite

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

É a última (quarta) data impressa.


Para encontrar todos os arquivos em seu sistema que não pertencem a um usuário conhecido, digite

find / -nouser -ls

Se 32697não for um usuário no seu sistema (sem nome de usuário), isso poderá fornecer algumas informações (por exemplo, arquivos relacionados a um aplicativo específico que você instalou podem significar que o aplicativo interferiu nas configurações do usuário)

Daniel Beck
fonte
"As substituições de tarefas iniciadas por usuário (por exemplo, quais tarefas por usuário estão desabilitadas para um usuário) estão localizadas nos subdiretórios de /private/var/db/launchd.db/, por exemplo, com.apple.launchd.peruser.501." você pode explicar isso? alguma documentação sobre substituições de tarefas iniciadas?
nick2k3
@nick From man launchctl: -w Substitui a chave Disabled e a define como false. Nas versões anteriores, essa opção modifica o arquivo de configuração. Agora, o estado da chave Desativado é armazenado em outro local do disco. . /.../launchd.dbestá "em outro lugar". Se você forçar a carga / descarga de uma tarefa por usuário, ela não modificará o arquivo usado por todas as contas (seria meio estúpido impor suas preferências a outras pessoas em um sistema multiusuário). E esse diretório é onde eles são armazenados, mas apenas se forem personalizados (por exemplo, executar um desativado por trabalho padrão ou vice-versa). Não é realmente uma preferência vital.
Daniel Beck
Ok, muito obrigado pela sua explicação!
nick2k3
6
Além de remover o diretório, você quer matar o trabalho de launchd - sudo launchctl stop com.apple.launchd.peruser.32697, sudo launchctl unload com.apple.launchd.peruser.32697,sudo launchctl remove com.apple.launchd.peruser.32697
Doug Harris
Obrigado Doug, o último conjunto de três comandos impede que esse comando seja executado constantemente.
ConstantineK