В вашем «статусе сети» нет подробностей о том, почему что-то не удалось в скрипте systemd. ifconfig показывает их как работающие, и у вас, предположительно, есть маршрут по умолчанию, поэтому ping работает. Диспетчер сети не является настоящим -контроллером времени, и он обычно мешает, если вы хотите сделать что-то хоть немного странное, поэтому его статус бесполезен.
ipcs -m -p
показывает shmid и PID процесса, который его создал ("cpid" ).
Он также показывает «последний оператор» или «lpid» -Я не знаю, что это такое (справочная страница не говорит, поэтому мне пришлось копаться глубже в документации или исходном коде. чтобы узнать, и это сумасшедший разговор! ).
Например, на одной из моих систем (, на которой помимо прочего работают postgres и apache):
$ ipcs -m -p
------ Shared Memory Creator/Last-op PIDs --------
shmid owner cpid lpid
36 postgres 3155864 2367086
38 root 14452 2362481
(Apache, pid 14452, показан с владельцем root. Он запускается как root, но изменяется на www-data
, когда он предварительно -разветвляет другие процессы ).
Мы можем использовать awk
для извлечения PID создателя,и передайте это в xargs -n 1 pstree -p
, чтобы показать дерево PID ниже этих PID.
ПРИМЕЧАНИЕ:pstree
принимает не более одного аргумента PID за раз, поэтому мы должны использовать xargs -n 1
для запуска pstree
один раз для каждого pid.
Например, (с использованием pstree -A
для вывода ASCII. Вероятно, это будет выглядеть немного красивее на вашем терминале без -A
, используя символы рисования линии по умолчанию -):
$ ipcs -m -p | awk '$3 ~ /^[0-9]+$/ {print $3}' | xargs -n 1 pstree -A -p
postgres(3155864)-+-postgres(1610942)
|-postgres(1620056)
|-postgres(1761109)
|-postgres(1831225)
|-postgres(1931537)
|-postgres(2123512)
|-postgres(2284745)
|-postgres(2386392)
|-postgres(3155867)
|-postgres(3155868)
|-postgres(3155869)
|-postgres(3155870)
|-postgres(3155871)
|-postgres(3155872)
`-postgres(3159321)
apache2(14452)-+-apache2(141263)
|-apache2(762459)
|-apache2(856005)
|-apache2(856006)
|-apache2(856008)
|-apache2(856009)
|-apache2(856010)
|-apache2(856438)
|-apache2(1369957)
|-apache2(1777646)
|-apache2(1887781)
`-apache2(3746760)
При необходимости это может быть обработано после -(с помощью awk или чего-то еще )для извлечения только PID из круглых скобок.
Кстати, pstree
имеет различные другие полезные опции (, в том числе -u
для отображения переходов uid и -a
для отображения полной командной строки )для изменения того, что она выводит и как она ее форматирует.
Если вам нужно показать pstree как для cpid, так и для lpid, используйте что-то вроде:
$ ipcs -m -p | awk '$3 ~ /^[0-9]+$/ {printf "%s\n%s\n", $3, $4}' | xargs -n 1 pstree -p