Como você sabe se está sem relógios? cauda dirá!
- Inicie
tail
com a opção-f
(follow) em qualquer arquivo antigo, por exemplo %código%:- Se tudo estiver bem, mostrará as últimas 10 linhas e fará uma pausa; abortar com Ctrl-C
- Se estiver sem relógios , ele falhará com este erro um pouco enigmático :
tail: cannot watch '/var/log/dmsg': No space left on device
Para os curiosos: Por que é tail um "telltail"?
- Na verdade, qualquer aplicativo bem escrito deve ter a cortesia de dizendo-lhe, uma vez que a inotify API / chamadas diz claramente qual é o negócio.
- Experimente
tail -f /var/log/dmesg
e, quando for bem sucedido, termina com:inotify_add_watch(4, "/var/log/dmesg", IN_MODIFY...) = 1
- mas se falhar, ou seja, você está sem relógios , ele dirá:
inotify_add_watch(4, "/var/log/dmesg", IN_MODIFY..) = -1 ENOSPC (No space left on device)
Você pode aumentar os relógios? Por quanto? Alguma troca?
Resposta curta: Claro, sem esforço. Vá direto para meio milhão (524288) se quiser ... a memória adicional usada deve ser insignificante em um sistema moderno com 4 GB + de memória.
- Cada relógio de inotify usado ocupa 540 bytes (sistema de 32 bits) ou 1 kB (duplo em 64 bits) [fontes: 1 , 2 ]
- Isso vem da memória do kernel , que não pode ser mudada.
-
Assim, supondo que você definiu o máximo em 524288, e todos foram usados (improvável), você usaria aprox. 256 MB / 512 MB de memória de kernel de 32 bits / 64 bits
- Observe que seu aplicativo também usará memória adicional para acompanhar as alças de inotificação, os caminhos de arquivos / diretórios etc. - o quanto depende do design.
-
Qual é o valor máximo? Eu acho que nenhum, em teoria, contanto que você tenha RAM suficiente. Na prática, 524288 foi oficialmente recomendado pelos aplicativos , e as pessoas têm foram definindo-o para 2 milhões , com o uso de memória associado, claro.