Процесс с PID 1 является процессом инициализации. Это остается верным в пространстве имен pid или контейнере :этот pid 1 не может быть уничтожен с помощью SIGKILL
, потому что для него не определен KILL
обработчик сигнала, в отличие от любого другого пользовательского процесса.
Если вы действительно хотите его убить, вы должны убить его с хоста . Запуск на хосте (с достаточными привилегиями, вероятно root):
kill -KILL $(docker inspect --format '{{.State.Pid}}' containername)
Это остановит весь контейнер, поскольку удаление его PID 1 означает остановку контейнера. Обратите внимание, что я ответил на заголовок вопроса, но не на основную проблему :, которая вызывает OOM.
ОБНОВЛЕНИЕ :Вероятно, проще использовать docker kill
, который по умолчанию соответствует сигналу KILL
. Это будет:
docker kill containername
UPDATE2 :убедить, что PID 1 нельзя убить с помощьюSIGKILL
(ака -9
), даже в контейнере (пример требует включения пространства имен пользователя, иначе просто используйте unshare --mount-proc --fork --pid
как root ).
первая клемма:
$ unshare --map-root-user --mount-proc --fork --pid
# echo $$
1
# pstree -p
bash(1)---pstree(88)
# kill -9 1
#
без эффекта
На втором терминале:
$ pstree -p $(pidof unshare)
unshare(2023)───bash(2024)
$ kill -9 2024
первая клемма:
# Killed
$
Почему бы вам не указать файл в Finder и просто удалить оттуда последние 2 символа. Вы можете выбрать имя файла, а затем изменить имя.