Опасен ли `make -j` (без аргументов)? [закрыто]

Вы можете попробовать исключить причину из-за настроек учетной записи пользователя. Поскольку они обычно хранятся в вашем домашнем каталоге (/ home / you), самым быстрым способом было бы войти в систему на другом экране, сделать себя root, перенести свой исходный домашний каталог на другое имя (mv / home / you / home / you. old) и воссоздайте свой домашний каталог (mkdir / home / you; cp -r / etc / skel / home / you; chown -R you: you / home / you). Другой вариант - создать еще одного нового пользователя и попробовать это.

11
15.10.2016, 23:53
2 ответа

Есть инструменты, которые позволяют прострелить себе ногу множеством творческих способов. Это сделано для того, чтобы вы могли использовать свое воображение для решения проблем, не ограничиваясь тем, что кто-то считает «разумным».

Выполнение make -j в небольшом проекте вполне разумно. В других проектах использование -j без аргументов серьезно ухудшит отзывчивость системы. В некоторых проектах использование параллельных сборок, даже с -j2 , приведет к полному нарушению сборки (файлы, созданные параллельным процессом make, не успевают за другим и т. Д.).

Я бы лично избегал псевдонимов make в make -j4 (как вы говорите в комментариях).Я считаю, что лучше явно указать машине, что ей делать, чтобы я знал , что она будет делать. Через несколько дней я забуду об этом псевдониме и буду удивляться, почему четыре проекта, которые я создаю в отдельных терминалах, делают мою систему не отвечающей.

Что касается «опасного» ... Это слово означает разные вещи в разных контекстах. Да, это «опасно», потому что может привести к зависанию системы. Да, это «опасно», потому что это может привести к сбою в процессе сборки на полпути. Но нет, это не «опасно» в том смысле, что переформатирует ваш жесткий диск или начнет удалять случайные файлы.

Итак, как это защитить от идиота?

Вот верное пошаговое руководство:

  1. Научитесь пользоваться своими инструментами.

Также обратите внимание, что флаг -j в BSD make требует аргумента, и что этот флаг нестандартный (стандарт Unix POSIX не требует ' не упоминаю об этом).

5
27.01.2020, 19:59

Вы также можете ограничить производительность с помощью-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.

4
27.01.2020, 19:59

Теги

Похожие вопросы