Что происходит на уровне ядра , когда кто-то создает или удаляет файл (, включая все служебные действия )?
Я погуглил, но не смог найти хорошего ответа. Прошу извинить, если это кажется тривиальным вопросом, но, поскольку я довольно слаб в понятиях операционной системы, я не знаю ответа. Это был вопрос собеседования.
Необходимо проверить системные вызовы, которые связаны с соответствующими командами для получения низкоуровневой идеи того, что происходит.
Инструмент для трассировки системных вызовов strace
.
Например, если я работаю strace touch foobar.txt
проверять системные вызовы, связанные с созданием пустого использования файла touch
самый известный системный вызов (вместе с другими):
open("foobar.txt", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
Теперь читайте man 2 open
получить идею детали.
Так же, если Вы хотите проследить системные вызовы rm foobar.txt
важный системный вызов (вместе с другими) был бы:
unlinkat(AT_FDCWD, "foobar.txt", 0) = 0
Теперь читайте man 2 unlinkat
.
Также можно сохранить strace
вывод в файл для будущего диагноза при помощи -o
опция:
strace -o s_out.txt touch foobar.txt
Можно также отследить только определенные системные вызовы:
strace -e open touch foobar.txt
Также проверьте man strace
.