Список процессов, связанных с общей памятью

В вашем «статусе сети» нет подробностей о том, почему что-то не удалось в скрипте systemd. ifconfig показывает их как работающие, и у вас, предположительно, есть маршрут по умолчанию, поэтому ping работает. Диспетчер сети не является настоящим -контроллером времени, и он обычно мешает, если вы хотите сделать что-то хоть немного странное, поэтому его статус бесполезен.

0
24.05.2021, 12:38
1 ответ

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
3
28.07.2021, 11:29

Теги

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