Почему программа хочет / предпочитает использовать разреженный файл?

Я знаю, что такое разреженный файл, но не могу понять, как и почему такая программа, как lastlog, предпочла бы такой файл обычному файлу.

Я знаю, что разреженные файлы могут использоваться для зацикливания файловых систем для экономии места, но это, очевидно, неэффективно для программы, так как она имеет другой уровень.

Единственное, о чем я могу думать, - это использовать разреженный файл для эффективного произвольного доступа к памяти гигантского многомерного массива (например, матрицы), но я даже не уверен, для чего ли люди используют разреженные файлы (и я не даже уверен, что это действительно намного эффективнее для нескольких файлов).

1 ответ

Решение

/var/log/lastlog Файл содержит информацию о самом последнем входе в систему для каждого пользователя, организованную uid. Если uid не используется или этот пользователь никогда не входил в систему, то никакие данные не будут сохранены в разреженном файле для этой записи.

Если есть большие пробелы в нумерации uid в /etc/passwdсоответственно будут большие пробелы в /var/log/lastlog файл.

Эта структура позволяет несколько lastlog процессы для доступа / обновления файла одновременно без блокировки или риска повреждения. При более сложной файловой структуре должны быть блокировки, чтобы предотвратить повреждение при обновлении файла. И блокировка во время последовательности входа не очень хорошая идея.

Другие вопросы по тегам