Как найти, какие пакеты из официальных репозиториев Ubuntu необходимо обновить (относительно текущего состояния)?

Позвольте мне сначала объяснить, когда и почему вызывается OOMKiller?

Скажем, у вас есть 512 RAM + 1GB Swap memory. Теоретически, ваш ЦП имеет доступ к 1,5 ГБ виртуальной памяти.

Теперь, в течение некоторого времени все работает нормально в пределах 1,5 ГБ общей памяти. Но внезапно (или постепенно) ваша система начала потреблять все больше и больше памяти, и она достигла примерно 95% от общего объема используемой памяти.

Теперь скажите, что любой процесс запросил у ядра большой кусок памяти. Ядро проверит доступную память и обнаружит, что нет способа выделить вашему процессу больше памяти. Поэтому он попытается освободить память, вызывающую / вызывающую OOMKiller ( http://linux-mm.org/OOM ).

У OOMKiller есть собственный алгоритм оценки ранга для каждого процесса. Как правило, какой процесс использует больше памяти, он становится жертвой смерти.

Где я могу найти логи OOMKiller?

Обычно в каталоге / var / log. Либо /var/log/kern.log, либо / var / log / dmesg

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

Некоторые типичные решения:

  1. Увеличение памяти (не подкачка)
  2. Найдите утечки памяти в вашей программе и устраните их
  3. Ограничьте память, которую может использовать любой процесс (например, память JVM может быть ограничена с помощью JAVA_OPTS)
  4. См. журналы и Google :))
0
задан 14.05.2020, 12:09

1 ответ

В начале Вы захотите обновить списки пакета. Вы могли просто использовать apt-get update, но так как Вы только хотите официальные источники, это брало бы излишне долго. Для ускорения вещей немного используйте следующее:

apt-get update -o Dir::Etc::sourcelist='sources.list' \
-o Dir::Etc::sourceparts='-' -o APT::Get::List-Cleanup='0'

Теперь, когда Ваши списки пакета актуальны, необходимо получить URL отдельных пакетов. Следующий код одолжен от способно-быстрый , Вы, возможно, должны были бы скорректировать его к своим потребностям.

DLLIST="/tmp/packages.list"
# Add header to overwrite file:
echo "# package download list: $(date)" > "$DLLIST"
# We use --print-uris to get the uris of the packages instead of downloading them
for urimd5 in $(apt-get -y --print-uris upgrade |
    egrep "^'(http(s|)|(s|)ftp)://[^']+'.+ MD5Sum:\S+\s*$" |
    sed "s/^'\(.\+\)'.*MD5Sum:\(\S\+\)\s*$/\1::MD5Sum:\2/"); do
  uri="${urimd5%::MD5Sum:*}"
  checksum="${urimd5#*::MD5Sum:}"
  # Here we are checking if the package comes from the official sources,
  # only then it's written to the list:
  if [[ $uri == *ubuntu.com* ]]; then
    echo "$(get_mirrors "$uri")" >> "$DLLIST"
    echo " checksum=md5=$checksum" >> "$DLLIST"
    # Here you can specify where the files go.
    # Change path to the location where you want the packages to be downloaded.
    echo " out=/path/$(basename $uri)" >> "$DLLIST"
  fi
done

Теперь у Вас есть список URL в файлы пакета, которые Вы хотите загрузить в /tmp/packages.list. Для загрузки пакетов мы используем aria2c, который можно установить из репозиториев по умолчанию путем выполнения sudo apt-get install aria2. Здесь мы идем:

aria2c -i $DLLIST

Просто соединенное вышеупомянутое в Вашем сценарии. Это должно будет быть выполнено как корень, конечно.

0
ответ дан 14.05.2020, 12:10
  • 1
    Целью сценария является находка, какие пакеты только из официальных репозиториев Ubuntu должны быть обновлены (относительно текущего состояния), и после получения его, для загрузки их – Pete BD 14.05.2020, 12:10
  • 2
    Первое спасибо за Ваш ответ, я ценю. Да я должен создать сценарий для определения, какие пакеты из официальных репозиториев Ubuntu должны быть обновлены (относительно текущего состояния), таким образом, мне нужна команда для наблюдения, какие пакеты должны быть обновлены, и после этого я должен загрузить – Stephen Friedrich 14.05.2020, 12:10
  • 3
    Было бы полезно знать немного больше о какой you' ре, пытающееся достигнуть. Что сценарий, как предполагается, делает точно? Действительно ли важно только обновить пакеты из официальных репозиториев при оставлении сторонних приложений нетронутыми? – jaime 14.05.2020, 12:11
  • 4
    Да, это должно просто загрузить пакеты, но не устанавливать – jaime 14.05.2020, 12:11
  • 5
    Это должно просто загрузить пакеты или установить их также? – Langdon 14.05.2020, 12:12

Теги

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