Когда Вы работаете make
с тем make-файлом цель по умолчанию out
, и первая предпосылка calc.o
, который строка сборки для той цели - то, что находится по Вашей ошибке.
То, что, кажется, происходит, - то, что вся строка сборки выполняется оболочкой, как будто заключенный в кавычки - который это не, и нормальное sh
не сделает этого.
Но Вы, возможно, не используете что-то, что квалифицирует как sh
совместимый:
SHELL=cpp2
Переопределение этого (это уже определяется в среде), средства cpp2
используется, и очевидно это не ведет себя правильно.
Да, вы можете потреблять все inodes систем. Они являются ограниченным ресурсом, таким образом, как Diskspace, и они предварительно выделены при выполнении MKFS.Ext4
, например.
Вы можете использовать такие инструменты, как TUNE2FS -L <устройство>
или DF -I
, чтобы увидеть, сколько выделено и используется.
$ df -i /
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/fedora-root 3276800 355850 2920950 11% /
Итак, эта файловая система содержит 2920950 бесплатно. Если бы я начал делать файлы, каталоги или ссылки на файловую систему, это было бы всем, что мне нужно было сделать, чтобы потреблять их все. Поймите, что я мог бы потреблять все эти inodes с небольшими файлами или ссылками, и все еще есть примерно все дископространство, все еще доступно для меня.
Я не уверен, что вы получаете здесь, но единственный способ, которым я знаю, где вы можете потреблять inodes - это создавать файлы, каталоги или ссылки. Я не знаком с другим способом потреблять их.
Здесь вы можете видеть, я потребляю 1 inodes, когда я создаю пустой каталог.
$ df -i /
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/fedora-root 3276800 355850 2920950 11% /
$ sudo mkdir /somedir
$ df -i /
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/fedora-root 3276800 355851 2920949 11% /
Самый простой способ потреблять inodes, вероятно, сделает каталог дерева каталогов.
$ sudo mkdir /somedir/1
$ df -i /
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/fedora-root 3276800 355852 2920948 11% /
$ sudo mkdir /somedir/2
$ df -i /
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/fedora-root 3276800 355853 2920947 11% /
$ sudo mkdir /somedir/3
$ df -i /
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/fedora-root 3276800 355854 2920946 11% /
Вот еще один пример, где я употребляю inodes, создавая несколько ссылок с использованием LN
TOTHE TOY FILE.
$ ln -s afile ln1
$ df -i .
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/fedora_greeneggs-home 26722304 1153662 25568642 5% /home
$ ln -s afile ln2
$ df -i .
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/fedora_greeneggs-home 26722304 1153663 25568641 5% /home
$ ln -s afile ln3
$ df -i .
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/fedora_greeneggs-home 26722304 1153664 25568640 5% /home
Этот скрипт создаст столько файлов, поскольку у вас есть inodes, доступных на вашем /
файловой системе:
while [ $(df --output=iavail / | tail -n1) -gt 0 ]; do
touch $((i++));
done
, насколько я знаю, нет способа взять на себя inodes без использования файлов или каталогов, это Что они для ведь. Узел, что inodes останется в использовании после завершения сценария. Вам придется удалить созданные файлы для их освобождения.
файлы inodes.
Тем не менее, вы можете создавать файлы, которые не связаны с любым каталогом и все еще используют inode. Например:
zsh -c 'repeat 1000 ((repeat 1000 {exec {fd}> file; rm file}
exec sleep 1000 >&-) | cat)'
будет (в конечном итоге) использовать 1 000 000 inodes. Эти inodes будут удалены файлы, которые еще не были восстановлены с момента тех, сколько процессов
.
Количество файлов, которые вы можете создать таким образом, ограничен количеством процессов, которые вы можете создавать, и максимальное количество файлов, которые вы можете открыть на процесс.