У меня нет ответа на эту точную проблему, но я могу попытаться дать Вам подсказку того, что может происходить: Недостающие зависимости в Make-файлах.
Пример:
target: a.bytecode b.bytecode
link a.bytecode b.bytecode -o target
a.bytecode: a.source
compile a.source -o a.bytecode
b.bytecode: b.source
compile b.source a.bytecode -o a.bytecode
Если Вы звоните make target
все скомпилирует правильно. Компиляция a.source
выполняется (произвольно, но детерминировано) сначала. Затем компиляция b.source
выполняется.
Но если Вы make -j2 target
оба compile
команды будут выполнены параллельно. И Вы на самом деле заметите, что зависимости Вашего Make-файла повреждаются. Вторая компиляция принимает a.bytecode
уже компилируется, но это не появляется в зависимостях. Таким образом, ошибка, вероятно, произойдет. Корректная строка зависимости для b.bytecode
должен быть:
b.bytecode: b.source a.bytecode
Возвратиться к Вашей проблеме, если Вы не удачливы, что возможно, что команда зависает в 100%-м цикле ЦП из-за недостающей зависимости. Это, вероятно, что происходит здесь, недостающая зависимость не могла быть показана последовательной сборкой, но она была показана Вашей параллельной сборкой.
Вы могли запустить с этого:
find /your/file -mtime +182 -exec rm {} +
Где +182
дневное количество.
Можно просто использовать logrotate
. Это уже доступно в большинстве систем Linux, и много пакетов уже имеют logrotate сценарии, предварительно сконфигурированные, или можно настроить их или записать собственное.
@scottmarriott Not all versions of find support +/- for -mtime. What OS and version of find do you have? – jordanm May 30 '13 at 13:04
Чтобы ответить на вопрос @jordanm, один из способов сделать это — перебрать все найденные результаты find
и выполнить над ними что-то в теле цикла for
.
# Using the general form:
for <identifier> in $(find <source-dir> -mtime +<days>) ; do <thing> ; done
# You could write their location to a parallel script file
echo '#!/bin/bash' >./old.stuff
for hogfile in $(find. -mtime +182 ) ; do echo "rm $PWD/$hogfile &" >> "./old.stuff" ; done
# Make it into an executable
chmod +x./old.stuff
# Profit
./old.stuff
find
поддержка+/-
для-mtime
. Что ОС и версияfind
Вы имеете? – jordanm 30.05.2013, 16:04