vi
и Caps Lock по сравнению с. /etc/passwd
su -
vi /etc/passwd
. Существует нет vipw
, и "мы просто делаем незначительные редактирования" так или иначе.Я сделал это однажды. Удивительно, система оставалась функциональной в течение многих месяцев. Cronjobs хорошо работал, никакие ошибки не выделились в файлах журнала.
Мы не заметили эту проблему, пока мы не перезагрузили систему несколько месяцев спустя и не могли войти в систему в консоли. ps
показал набор заданий, принадлежавших UID '0' не пользователем 'корень'.
Вы не могли войти в систему как корень, ни работать su
или su -
, и был нет sudo
на этом поле. Не было никакого дисковода для гибких дисков, CD-ROM был арестован и никакие USB-порты (так никакой внешний CD-ROM). Однопользовательский режим не работал, потому что необходимо ввести в пароле для корня, и это прибывает из /etc/passwd
.
Обычно, du
информация о шоу об использовании диска (который является, куда его название происходит от). Следует иметь в виду это
disk usage != sum of file sizes
Поскольку каждый файл поднимает много блоков в файловой системе (см. man mkfs.ext2
например). Это означает, что только в очень редкой ситуации использование диска файла равняется своему фактическому размеру - для этого, размер должен быть точно несколькими из размера блока.
Думайте о блоках файловой системы как о полях, которые содержат части файлов - каждый может содержать часть только одного файла.
Для версии GNU du
, проверьте --apparent-size
опция.
Еще более интересная ситуация может произойти, когда существуют некоторые редкие файлы в файловой системе!
В моей системе Ubuntu, с помощью ext4, du -b file
дает размер в байтах фактического файла, и du -b dir
дает размер в байтах файла (файлов) + каталог наверху, издержки, в моем случае, кратных числах 4 096 байтов..
Этот служебные увеличения как количество увеличений файлов.
Примечание: даже если файлы удалены, каталог наверху остается в более высоком уровне, которым это было в том, прежде чем мухи были удалены..
Я не попытался перезагрузить, видеть, возвращается ли это, но в любом случае, это означает, что размер каталога варьируется в зависимости от исторических обстоятельств.
Соответствие каждому размеру файлов может быть наилучшим вариантом для точного значения общих размеров файла.
Следующие общие количества сценария все размеры файла (в байтах)..
Для OS X, если Вы не имеете -b
опция для 'du', можно использовать stat
вместо этого. (если у Вас есть он :)... Прокомментированная строка показывает Ubuntu stat
альтернатива du -b
;
unset total
while IFS= read -r -d $'\0' rf; do
# (( total += $(stat "$rf" | sed -nre 's/^ Size: ([0-9]+).*/\1/p') ))
(( total += $(du -b "$rf" | cut -f 1) ))
done < <(find . -type f -name '*' -print0)
echo $total
stat
. Ваш сценарий не является портативным вне Linux так или иначе.
– Gilles 'SO- stop being evil'
02.09.2011, 01:49
coreutils
получить версию GNU du
как gdu
. Так не точно портативный, но может быть полезно для людей на OS X для получения, версии GNU некоторых удаляют сердцевину utils.
– drfrogsplat
19.11.2012, 03:29
О Mac OS X и Средстве поиска (в Snow Leopard, версии 10.6.8) я заметил следующее.
bash
(1)) ниже. BLOCKSIZE
набор в моей оболочке, но я протестировал (теперь, немного) обе версии и значения по умолчанию для $BLOCKSIZE
дает те же значения. #!/usr/bin/env bash
#tab-width:4
du -s "${@:-.}" |awk '{u+=$1}END{ print u*'${BLOCKSIZE:-0512}' }'||exit $? #macosx (xnu)
# gdu -sB${BLOCKSIZE:-4096} "${@:-.}" |awk '{u+=$1}END{ print u*'${BLOCKSIZE:-4096}' }'||exit $? #macports gnu
#!/usr/bin/env bash
#tab-width:4
for a;do find "$a" -type f -print0|xargs -0 stat -f %z |awk '{u+=$1}END{ print u }'||exit $?;done #macosx (xnu)
# for a;do find "$a" -type f -print0|xargs -0 gstat -c %s |awk '{u+=$1}END{ print u }'||exit $?;done #macports gnu
du
(1) ни (гну) gdu
(1) кажется, считает расширенные атрибуты (xattr
)И затем я должен просто каламбурить 'Выполненный путь и сделать математику'
Мир и доброй ночи fo'real на этот раз.
Суммируйте все файлы в каталоге:
OSX: найдите dir ! -тип d -print0 | xargs -0 статистика -f '%z' | awk '{сумма += $1} END{print sum}'
Linux: найди Дир! -тип d -printf "%s\n" | awk '{sum += $1} END{print sum}'
actual
илиapparent
. (Также посмотрите мое обновленное объяснение). – rozcietrzewiacz 01.09.2011, 10:03