Почему программа хочет / предпочитает использовать разреженный файл?
Я знаю, что такое разреженный файл, но не могу понять, как и почему такая программа, как lastlog, предпочла бы такой файл обычному файлу.
Я знаю, что разреженные файлы могут использоваться для зацикливания файловых систем для экономии места, но это, очевидно, неэффективно для программы, так как она имеет другой уровень.
Единственное, о чем я могу думать, - это использовать разреженный файл для эффективного произвольного доступа к памяти гигантского многомерного массива (например, матрицы), но я даже не уверен, для чего ли люди используют разреженные файлы (и я не даже уверен, что это действительно намного эффективнее для нескольких файлов).
1 ответ
/var/log/lastlog
Файл содержит информацию о самом последнем входе в систему для каждого пользователя, организованную uid. Если uid не используется или этот пользователь никогда не входил в систему, то никакие данные не будут сохранены в разреженном файле для этой записи.
Если есть большие пробелы в нумерации uid в /etc/passwd
соответственно будут большие пробелы в /var/log/lastlog
файл.
Эта структура позволяет несколько lastlog
процессы для доступа / обновления файла одновременно без блокировки или риска повреждения. При более сложной файловой структуре должны быть блокировки, чтобы предотвратить повреждение при обновлении файла. И блокировка во время последовательности входа не очень хорошая идея.