Como acontece, existe outra interface significativa com o kernel: os sistemas de arquivos /proc
e /sys
virtual. Enquanto eles não possuem arquivos regulares, seus conteúdos são gateways diretos para o kernel: agir sobre eles é agir diretamente na memória alocada pelo kernel. Por exemplo, se você quiser descartar todos os caches de memória, você pode usar ...
echo 3 > /proc/sys/vm/drop_caches
... e o kernel reagirá imediatamente.
Agora, um programa precisará de chamadas do sistema para interagir com o sistema de arquivos: open
, read
, write
e assim por diante ... No entanto, ainda existe uma maneira de rastrear todas essas chamadas de sistema : o kernel fornece um mecanismo de rastreamento sob /sys/kernel/debug/tracing
. Mais especificamente, o rastreamento de chamadas do sistema é tratado por /sys/kernel/debug/tracing/events/syscalls
. Esse diretório virtual contém dois subdiretórios para cada chamada de sistema. Por exemplo, com a chamada de sistema aberto, temos:
-
sys_enter_open
-
sys_exit_open
Nestes diretórios, você encontrará um arquivo chamado enable
. Se ele contiver "1", o evento associado (entrada ou saída de uma chamada open
) será rastreado. Eu costumo usar o evento enter
, mas você pode escolher o que melhor atenda às suas necessidades.
Depois de ativar o rastreamento de chamada do sistema, você encontrará o log em /sys/kernel/debug/tracing/trace
. Agora, tenha em mente que a chamada do sistema open é usada muito . É o gateway final entre um programa e um arquivo, e arquivos podem ser literalmente qualquer coisa em um sistema Linux. Também tenha em mente que ...
UNIX was not designed to stop its users from doing stupid things, as that would also stop them from doing clever things. — Doug Gwyn
Enquanto você pode monitorar o que acontece no seu sistema, o kernel não tentará impedir os usuários de fazer coisas estúpidas: isso é mais parte do trabalho do administrador de sistemas.
O gerenciamento do mecanismo de rastreamento requer permissões em /sys/kernel/debug/tracing/trace
. Você provavelmente precisará ser root para ativar e manipular o traço. Não se esqueça de desativar o rastreamento quando terminar.