Ubuntu использует выскочку init демон который начальными загрузками по умолчанию к (эквивалент?) runlevel 2. Если Вы хотите измениться, значение по умолчанию runlevel затем создают/etc/inittab с initdefault записью для runlevel, который Вы хотите.
:id:3:initdefault:
принес бы системе до runlevel 3.
Статья о нем здесь
Я считаю, что что-то вроде этого могло бы работать в busybox:
du `cat filelist.txt` | awk '{i+=$1} END {print i}'
У меня нет такой же среды, как у вас, но если вы столкнетесь с проблемами с пробелами в именах файлов, то сработает и что-то вроде этого:
cat filelist.txt | while read file;do
du "$file"
done | awk '{i+=$1} END {print i}'
Редактировать 1 :
@stew прав в своем сообщении ниже, du показывает использование диска, а не точный размер файла. Чтобы изменить поведение, busybox использует флаг -a, поэтому попробуйте: du -a "$ file"
для получения точного размера файла и сравните результат / поведение.
while read filename ; do stat -c '%s' $filename ; done < filelist.txt | awk '{total+=$1} END {print total}'
Это похоже на решение Маттиаса Анберга. Использование "чтения" позволяет избежать проблем с именами файлов / каталогами с пробелами. Я использую stat
вместо du
, чтобы получить размер файла. du получает объем места, который он использует на диске, вместо размера файла, который может быть другим. В зависимости от вашей файловой системы, 1-байтовый файл по-прежнему будет занимать 4 КБ на диске (или независимо от размера блока). Итак, для 1-байтового файла stat означает 1 байт, а du - 4k.
Я не знаю, способны ли ваши инструменты Linux на это, но :
cat /tmp/filelist.txt |xargs -d \\n du -c
Do, xargs установит в качестве разделителя символ новой строки, а du выдаст вам общий итог.
Глядя на http://busybox.net/downloads/BusyBox.html похоже, что «busybox du» будет поддерживать опцию общего итога, но «busybox xargs» не будет поддерживать настраиваемые разделители.
Опять же, я не уверен в вашем наборе инструментов.
Попробуйте что-то вроде этого:
$ cat filelist.txt | xargs ls -l | awk '{x+=$5} END {print "total bytes: " x}'
Чтобы правильно работать с пробелами в путях:
$ find /path/to/files -type f -print0 | xargs -0 ls -l | awk '{x+=$5} END {print "total bytes: " x}'
du -c `cat filelist.txt` | tail -1 | cut -f 1
-c
добавляет строку "общий размер";
хвост -1
занимает последнюю строку (с общим размером);
разрез -f 1
вырезает слово "общий".