Я установил следующееDockerfile
:
$ more Dockerfile
From centos
ADD run.sh /tmp/run.sh
RUN chmod +x /tmp/run.sh
ENTRYPOINT ["/tmp/run.sh"]
Настроить сценарий,run.sh
:
$ cat run.sh
while true; do sleep 15 ; echo "background"; done &
while true; do sleep 12 ; echo "foreground"; done
Построил:
$ docker build -t sleeper.
Sending build context to Docker daemon 7.791 MB
Step 1/4 : FROM centos
---> 49f7960eb7e4
Step 2/4 : ADD run.sh /tmp/run.sh
---> b4099de53780
Removing intermediate container 1ce8e3a1dac5
Step 3/4 : RUN chmod +x /tmp/run.sh
---> Running in e410429a6cba
---> 06789467e636
Removing intermediate container e410429a6cba
Step 4/4 : ENTRYPOINT /tmp/run.sh
---> Running in ad8b847b505f
---> a2415df63f99
Removing intermediate container ad8b847b505f
Successfully built a2415df63f99
Потом запустили:
$ docker run -dit sleeper
28c19c338e6e6177529cf989f42c7f14b17f1c705a61f5244d5350f0ab8f8364
Затем он повторяется, показывая:
foreground
background
foreground
background
Теперь, когда я смотрю на это, я вижу, что оно не ложится спать,несмотря на команды sleep
в конце концов «умирает»:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
28c19c338e6e sleeper "/tmp/run.sh" About a minute ago Up About a minute focused_lumiere
Сверху видно, что этот контейнер находился в поднятом состоянии более 1 минуты. Вот как ps auxf
выглядит внутри контейнера:
$ ps auxf
...
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 24 0.0 0.1 11828 2964 pts/1 Ss 16:00 0:00 /bin/bash
root 58 0.0 0.1 51712 3432 pts/1 R+ 16:01 0:00 \_ ps auxf
root 1 0.0 0.1 11692 2572 pts/0 Ss+ 15:58 0:00 /bin/bash /tmp/
root 5 0.0 0.1 11696 2272 pts/0 S+ 15:58 0:00 /bin/bash /tmp/
root 56 0.0 0.0 4368 636 pts/0 S+ 16:01 0:00 \_ sleep 15
root 57 0.0 0.0 4368 664 pts/0 S+ 16:01 0:00 sleep 12
Теперь, если мы убьем фон sleep 15
вот так:
$ kill 56
И запустить ещеdocker ps
:
$ docker ps
...
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 24 0.0 0.1 11828 2964 pts/1 Ss 16:00 0:00 /bin/bash
root 60 0.0 0.1 51712 3344 pts/1 R+ 16:01 0:00 \_ ps auxf
root 1 0.0 0.1 11692 2572 pts/0 Ss+ 15:58 0:00 /bin/bash /tmp/
root 5 0.0 0.1 11696 2272 pts/0 S+ 15:58 0:00 /bin/bash /tmp/
root 59 0.0 0.0 4368 636 pts/0 S+ 16:01 0:00 \_ sleep 15
root 57 0.0 0.0 4368 664 pts/0 S+ 16:01 0:00 sleep 12
Мы видим, что цикл while, охраняющий наш фоновый sleep 15
процесс, выполнил свою работу и перезапустил другой sleep 15
.
Это зависит от того, оба варианта возможны.
Контроллеры памяти сообщают об ошибках один раз; чтение их очищает их. Таким образом, если системная прошивка и операционная система пытаются обрабатывать отчеты EDAC, возникают гонки и ошибки могут быть пропущены. Таким образом, правильно -сконфигурированная система будет либо обрабатывать отчеты EDAC напрямую, сохраняя микропрограмму системы вне цикла, либо использовать GHES (соответствующий драйвер ACPI )для получения ошибок от системной микропрограммы (, это « прошивка в первую очередь» ).
С «прямым» драйвером EDAC операционная система обрабатывает исключение проверки машины (MCE )от контроллера памяти и делает все необходимое. С драйвером GHES системная прошивка обрабатывает MCE и информирует операционную систему.
В зависимости от сценария вы увидите разные журналы. Журналы загрузки должны сообщить вам, какова конфигурация, и если произойдет ошибка памяти, вы увидите «событие программного обеспечения» в журналах в первом режиме встроенного ПО, в противном случае — «событие оборудования».
Настройки могут быть комбинацией настроек микропрограммы и конфигурации операционной системы. В большинстве «низких» -конечных систем с поддержкой ECC -отсутствует соответствующая конфигурация микропрограммы (, есть только доступ к журналам ), и все это зависит от операционной системы. Конечные серверы более высокого уровня -будут иметь настройки в своей конфигурации прошивки и описание того, как настроить их (и операционную систему )в их руководстве.