Взгляните на fstat и lsof из пакетов портов / .
$ 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
systemd здесь прав. Вы пытаетесь запустить его из chroot, но chroot имеет совершенно другой набор путей, библиотек и сервисов. Разрешить вам вызывать systemctl было бы беспорядком :это правильная библиотека D -Bus? Версии systemctl внутри такие же, как у демона снаружи?
Если все, что вы хотите сделать, это использовать службу внутри chroot, у вас есть два варианта:
systemd-nspawn --boot
для запуска отдельного экземпляра systemd внутри chroot. Затем вы можете включить его, и он будет действовать только внутри. Если вы хотите использовать функции systemd
внутри контейнеров systemd-nspawn
, вам потребуется несколько вещей
dbus
в вашем контейнере systemd-nspawn --boot