Docker 20.10.x заставляет систему ждать несколько минут перед выключением или перезагрузкой

Это потому, что вы вводите свой массив xв $1, который является одним и тем же chr1для всех строк в первом файле. Таким образом, в каждой строке содержимое массива индексируется на основе одного и того же ключа и перезаписывается значением в $2. Итак, к концу файла у вас есть одна запись в массивеx['chr1']=744200

Вам нужно сохранить строку уникально. Сохраните ключ как кортеж $1 FS $2и измените свою логику на

awk 'NR == FNR { x[$1 FS $2] = $2; next }{ 
     for (key in x) { 
       split(key, arr)
       if (arr[2] > $2 && arr[2] < $3) 
           print arr[2], $0 
       else {
           print arr[2], "out of range"
       }
     }
}' file1 file2

Чтобы улучшить логику выполнения проверки диапазона только в строках, где первый столбец одинаков для обоих файлов, добавьте условие в ifкак

if ( (arr[2] > $2 && arr[2] < $3) && ( $1 == arr[1] ) ) 
3
31.08.2021, 07:24
1 ответ

Если вы используете динамическое -восстановление, это известная проблема в containerd shim v2, и ее исправление все еще находится на рассмотрении.

Обходной путь:

  1. Используйте прокладку v1 вместо v2

    Либо укажите время выполнения для конкретного контейнера

    docker run --runtime=io.containerd.runtime.v1.linux...`
    

    Или установите общесистемную -среду выполнения по умолчанию

    # cat /etc/docker/daemon.json
    {
        "default-runtime": "io.containerd.runtime.v1.linux",
        "live-restore": true
    }
    

    ВНИМАНИЕ:Среда выполнения v1 устарела и будет удалена в следующем выпуске Docker.

  2. Используйте службу systemd для уничтожения контейнеров перед перезагрузкой/выключением

    # /etc/systemd/system/containerd-shim-v2-workaround.service
    [Unit]
    Description=containerd-shim v2 workaround
    Before=docker.service
    Requires=containerd.service
    After=containerd.service
    
    [Service]
    Type=oneshot
    RemainAfterExit=yes
    ExecStop=-/bin/sh -c '[ "$(systemctl is-system-running)" = "stopping" ] || exit 0; ctr -n moby tasks ls -q | xargs -r -L1 ctr -n moby tasks kill; ctr -n moby containers ls -q | xargs -r ctr -n moby containers rm'
    
    [Install]
    WantedBy=containerd.service
    

    Я разместил это в ветке проблемы moby. Но это может не подходить для каждого варианта использования. Используйте с осторожностью.

4
19.10.2021, 17:30

Теги

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