Какова причина для Кв. - получают сбой с кодом возврата 137?

Я пытаюсь создать 0ad на travis-ci сервисе и я случайным образом испытываю отказы apt-get install (или apt-get dist-upgrade) с кодом возврата 137 без дальнейшей информации. travis-ci основан на Ubuntu 12.04. На что 137 указывает? Вывод в качестве примера может быть найден в https://travis-ci.org/krichter722/0ad/jobs/92938434.

Еще некоторая информация о системе.

$ uname -a && lsb_release -a
Linux testing-worker-linux-89e97461-1-15272-linux-4-69692739 2.6.32-042stab090.5 #1 SMP Sat Jun 21 00:15:09 MSK 2014 x86_64 x86_64 x86_64 GNU/Linux
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 12.04 LTS
Release:    12.04
Codename:    precise
1
задан 24 November 2015 в 17:41

2 ответа

Ответ о сигнале / ошибочный статус возврата процесса... хорошо... хорошо...

Из страницы справочника Bashобычно в большей части документации оболочки), waaay вниз в разделе назвал "Shell Grammer" и затем "Простые Команды", существует невинный оператор, читающий таким образом:

The return value of a simple command is its exit status,
  or 128+n if the command is terminated by signal n.

Возвращаемое значение любой оболочки (удар, sh, тире, ksh, csh, и др.) процесс (простая команда) является 8-разрядным неподписанным значением с ожидаемым диапазоном 0-255. Типичная таможня использования использует нуль (0) в качестве 'успеха' и чего-либо еще как 'ошибка'. Оболочка указывает, что процесс прерывался/прерывался/сигнализировался путем добавления 128 к значению сигналов и использования что как возвращаемое значение.

Если Вы являетесь достаточно взрослыми, Вы могли бы не забыть получать 'Ошибку 139' (Сигнал 11) аварийные прекращения работы во время компиляции ядра (это РАНЬШЕ брало всю ночь!), если у Вас были облупленная память или перегревающиеся проблемы.

Ошибка 137 указывает, что Кв. - добирается, процесс получил сигнал 9 (128+9=137), и сигналом 9 является УНИЧТОЖЕНИЕ.

Если Вы нечетки на именах сигнала по сравнению с числами, смотрите на вывод kill -l команда:

$ kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
... lots more ... 64 total

Ага! Замечательная запись на Википедию, под Статусом выхода, конкретно Shell и раздел сценариев. Это объясняет, что, в то время как waitpid статус выхода процесса является целым числом (интервал), оболочка обрабатывает, только получают более низкие 8 битов. Это также говорит о '128+n' объяснение. (Возможно, оператор Википедии о ksh, использующем '256+n', является неправильным, как в ksh странице справочника говорится '128+n'),

Просмотрите статью Википедии, поскольку она объясняет различные интерпретации, сделанные различными языками программирования и интерфейсами.

Надеюсь, это поможет.

(И да, я действительно читаю ВСЕ страницы справочника, не так ли?)

Приложение:

travis-ci предлагает не использовать apt-get upgrade (и следовательно, apt-get dist-upgrade) в виртуальных машинах. Установка, чего Вы желаете, но VM's обычно хорошо снабжается и актуален.

Использование apt-get upgrade возможно, способствовал Кв. - получают получение SIGKILL. Без дополнительной информации от travis-ci мы не можем определить точно почему. Но, обычно... SIGKILL используется при выполнении чего-то плохо, чрезмерного использования ресурсов, высокого использования CPU и т.п.... снова, мы не знаем, не может сказать от журналов, которые мы видели. (Как в стороне, посмотрите ulimit (в странице справочника удара), и setrlimit/getrlimit (2) и как обрабатываются его различные пределы... RLIMIT_CPU (или-t) кажется соответствующим здесь),

2
ответ дан 7 December 2019 в 12:44

Как там никакое сообщение об ошибке от apt-get, я мог согласиться с @lornix идеей. Но я только ожидаю проблему с доступным размером в квоте файловой системы, или это могла быть параллельная функция загрузки Кв. - добираются. (Это использует поток для каждого источника по умолчанию)

Здесь вполне оптимизированный для уменьшения ресурсов (но больше дольше время)

uname -a && lsb_release -a && df
sudo apt-get update
sudo apt-get install python-software-properties
sudo add-apt-repository --yes ppa:wfg/0ad.dev
sudo add-apt-repository --yes ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get remove oracle-java7-installer oracle-java8-installer postgresql-9.2 postgresql-contrib-9.2 postgresql-9.2-postgis-2.1 postgresql-9.3 postgresql-contrib-9.3 postgresql-9.3-postgis-2.1 postgresql-9.4 postgresql-contrib-9.4 postgresql-9.4-postgis-2.1 postgresql-9.1 postgresql-9.1-postgis-2.1 postgresql-9.1-postgis-scripts postgresql-9.2-postgis-scripts postgresql-9.3-postgis-scripts postgresql-9.4-postgis-scripts postgresql-client postgresql-client-9.1 postgresql-client-9.2 postgresql-client-9.3 postgresql-client-9.4 postgresql-client-common postgresql-common postgresql-contrib-9.1
yes | sudo apt-get -o Acquire::Queue-mode=access -yy --yes upgrade
yes | sudo apt-get -o Acquire::Queue-mode=access -yy --yes dist-upgrade
1
ответ дан 7 December 2019 в 12:44

Другие вопросы по тегам:

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