Вы можете попробовать исключить причину из-за настроек учетной записи пользователя. Поскольку они обычно хранятся в вашем домашнем каталоге (/ home / you), самым быстрым способом было бы войти в систему на другом экране, сделать себя root, перенести свой исходный домашний каталог на другое имя (mv / home / you / home / you. old) и воссоздайте свой домашний каталог (mkdir / home / you; cp -r / etc / skel / home / you; chown -R you: you / home / you). Другой вариант - создать еще одного нового пользователя и попробовать это.
Есть инструменты, которые позволяют прострелить себе ногу множеством творческих способов. Это сделано для того, чтобы вы могли использовать свое воображение для решения проблем, не ограничиваясь тем, что кто-то считает «разумным».
Выполнение make -j
в небольшом проекте вполне разумно. В других проектах использование -j
без аргументов серьезно ухудшит отзывчивость системы. В некоторых проектах использование параллельных сборок, даже с -j2
, приведет к полному нарушению сборки (файлы, созданные параллельным процессом make, не успевают за другим и т. Д.).
Я бы лично избегал псевдонимов make
в make -j4
(как вы говорите в комментариях).Я считаю, что лучше явно указать машине, что ей делать, чтобы я знал , что она будет делать. Через несколько дней я забуду об этом псевдониме и буду удивляться, почему четыре проекта, которые я создаю в отдельных терминалах, делают мою систему не отвечающей.
Что касается «опасного» ... Это слово означает разные вещи в разных контекстах. Да, это «опасно», потому что может привести к зависанию системы. Да, это «опасно», потому что это может привести к сбою в процессе сборки на полпути. Но нет, это не «опасно» в том смысле, что переформатирует ваш жесткий диск или начнет удалять случайные файлы.
Итак, как это защитить от идиота?
Вот верное пошаговое руководство:
Также обратите внимание, что флаг -j
в BSD make
требует аргумента, и что этот флаг нестандартный (стандарт Unix POSIX не требует ' не упоминаю об этом).
Вы также можете ограничить производительность с помощью-l
:
-l [load], --load-average[=load] Specifies that no new jobs (commands) should be started if there are others jobs running and the load average is at least load (a floating-point number). With no argument, removes a previous load limit.
Но учтите, что такой запуск не помогает:make -j -l4
.
По моему опыту )запускается слишком много заданий до того, как средняя нагрузка превысит предел (. Таким образом, комбинация может работать, например. make -j8 -l4
.