Выполните системные утилиты, такие как SystemCTL под Nspawn?

Взгляните на fstat и lsof из пакетов портов / .

Установка lsof (PKG_PATH зависит от версии вашей ОС):

$ su - root -c \
    "PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/5.8/packages/amd64 pkg_add -r lsof"
lsof-4.88: ok

Использование fstat :

# Start a process (nc) that listens on port 8080
$ nc -l 8080 & bg
[1] 17454
[1] nc -l 8080

# Get the process listening on port 8080:
$ fstat | grep :8080
cmihai   nc         17454    3* internet stream tcp 0x0 *:8080

Мы можем создать функцию для получения pid, например:

$ portpid() { fstat | grep ":$1" | awk '{print $3}' ;}
$ portpid 8080
17454

Затем мы можем убить процесс прослушивает порт 8080, например:

$ kill $(portpid 8080)
[1] + Terminated           nc -l 8080

Заявление об ограничении ответственности:

  • В этом примере НЕТ обработки ошибок или чего-либо еще - и я не проводил никакого тестирования, кроме приведенного здесь примера. Протестируйте это сами и добавьте в эту функцию некоторую обработку ошибок, чтобы не убить по ошибке другой процесс.

Ссылка:

2
23.07.2018, 03:10
2 ответа

systemd здесь прав. Вы пытаетесь запустить его из chroot, но chroot имеет совершенно другой набор путей, библиотек и сервисов. Разрешить вам вызывать systemctl было бы беспорядком :это правильная библиотека D -Bus? Версии systemctl внутри такие же, как у демона снаружи?

Если все, что вы хотите сделать, это использовать службу внутри chroot, у вас есть два варианта:

  • Используйте новые переносимые службы , представленные в systemd 239. Если вы хотите, чтобы внутренняя служба была доступна извне, то это то, что вам нужно.
  • Убедитесь, что systemd присутствует внутри chroot, и используйте systemd-nspawn --bootдля запуска отдельного экземпляра systemd внутри chroot. Затем вы можете включить его, и он будет действовать только внутри.
3
27.01.2020, 21:52

Если вы хотите использовать функции systemdвнутри контейнеров systemd-nspawn, вам потребуется несколько вещей

  1. dbusв вашем контейнере
  2. Вам необходимо загрузить контейнер с помощьюsystemd-nspawn --boot
4
27.01.2020, 21:52

Теги

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