Процессы непривилегированного режима могут использовать Межпроцессное взаимодействие (IPC) для общений друг с другом, самый быстрый метод достижения, это при помощи страниц общей памяти (shmpages
).
Это происходит, например, если banshee
играет музыку и vlc
играет видео, оба процесса должны получить доступ pulseaudio
производить некоторый звук.
Попытайтесь узнать больше о конфигурации общей памяти и использовании с некоторыми следующими командами:
Отобразите конфигурацию общей памяти:
sysctl kernel.shm{max,all,mni}
По умолчанию (Linux 2.6) это должно произвести:
kernel.shmmax = 33554432
kernel.shmall = 2097152
kernel.shmmni = 4096
shmmni
максимальное количество позволенных сегментов общей памяти, shmmax
позволенный размер сегмента общей памяти (32 МБ) и shmall
максимальный общий размер всех сегментов (отображенный как страницы, переводит в 8 ГБ),
В настоящее время используемая общая память:
grep Shmem /proc/meminfo
Если включено распределением:
ls -l /dev/shm
ipcs
большой инструмент должен узнать больше об использовании IPC:
ipcs -m
произведет использование общей памяти, Вы видите выделенные сегменты с соответствующими размерами.
ipcs -m -i
шоу больше информации об указанном сегменте включая PID процесса, создающего (cpid) и последнего (lpid) использование его.
ipcrm
может удалить сегменты общей памяти (но знать, что это, только удалены, если никакие другие процессы не присоединены к ним, см. nattach столбец в ipcs -m
).
ipcrm -m
Разряжение общей памяти могло быть программой в большой степени с помощью большого количества общей памяти, программа, которая не отсоединяет выделенные сегменты правильно, измененный sysctl
значения...
Это не конкретный Linux и также относится (большинство) к системам UNIX (общая память сначала появилась в CB UNIX).
С netcat-openbsd
, существует a -U
опция. Если у Вас нет его, Вы, вероятно, имеете netcat-traditional
установленный вместо этого; я предложил бы переключиться.
Команда Example: nc -U /var/run/socket
Можно использовать socat на Debian. Устанавливать его:
# apt-get install socat
socat
установленный на моем сервере, но это, конечно, доступно: packages.debian.org/squeeze/socat
– Paul D. Waite
14.12.2011, 00:30
netcat-openbsd
поддерживает подключение к сокетам UNIX-домена. Используя это, вы можете подключиться либо к сокету потока домена UNIX , либо к сокету дейтаграммы домена UNIX , и поэтому вы должны сообщить тип сокета netcat.
например, файл / dev / log
в Linux является сокетом датаграммы домена UNIX , поэтому nc -U / dev / log
победил » t работа . Вместо этого используйте nc -uU / dev / log
. Использование -u вместе с -U сообщает netcat, что это сокет дейтаграммы домена UNIX.
nc -U /tmp/socket #Connect to UNIX-domain stream socket
nc -uU /tmp/socket #Connect to UNIX-domain datagram socket
Аналогичным образом при использовании socat
используйте параметр UNIX-CLIENT. Используя эту опцию, вы можете подключиться как к сокетам потока домена UNIX , так и к сокетам дейтаграммы домена UNIX . На его странице руководства (man socat) сказано: « Сначала он пытается подключиться и, если это не удается, предполагает, что это сокет дейтаграммы
, таким образом поддерживая оба типа » .
socat - UNIX-CLIENT:/dev/socket #connect to UNIX-domain socket, irrespective of its type
Если вы работаете в системе, в которой установлен только busybox, может показаться, что она не поддерживает сокеты домена unix (опция -U
не существует ), но я обнаружил, что работает следующее:
$ echo "stats slabs" | nc local:/tmp/memcached.sock
STAT active_slabs 0
STAT total_malloced 0
END
Это может быть очень полезно для проверки работоспособности альпийских контейнеров.