Как узнать общую память между двумя процессами?

Вы не понимаете, что POSIX называет "простой командой", которая представляет собой непустую последовательность необязательных назначений, необязательных перенаправлений и необязательных слов (включая имя команды и ее необязательные аргументы), а также "команду", как она используется в синопсис команды руководства Bash , который здесь просто имя команды.

Если вы действительно хотите использовать здесь назначения, вы можете просто запустить:

aaa=1 command echo hello

Если нет никакой команды, а есть только назначение, нет особого смысла использовать команду , учитывая Фактически, нет встроенной функции или команды для поиска в PATH.

Если вы действительно хотите просто установить переменную с помощью команды , вы можете использовать

command typeset aaa=1

или

command declare aaa=1
4
09.08.2019, 03:14
1 ответ

Вы можете посмотреть / proc / / maps, / proc / / smaps (или pmap -x , если ваша ОС поддерживает) идентификаторы заинтересованных процессов и сравнение результатов для определения областей разделяемой памяти. Это включает в себя сегменты разделяемой памяти через вызовы shmget, а также любые разделяемые библиотеки и файлы.

Редактировать: как mr.spuratic указал в своем ответе здесь , есть более подробная информация о стороне ядра

Вы можете посмотреть RSS-канал процесса с помощью ps, однако он не принимает во внимание все общие страниц. Чтобы увидеть RSS для конкретного процесса, см. Ниже инструмент

cv@thunder:~$ ps -o rss,pid,comm -p $$,7023
  RSS   PID COMMAND
22060  7023 xfwm4
 6876 18094 bash

smem , который предоставляет более подробную информацию с учетом общих страниц. См. Ниже вывод того же процесса

cv@thunder:~$ smem -t |egrep "RSS|$$|7023"
  PID User     Command                         Swap      USS      PSS      RSS 
 9852 cv       grep -E RSS|18094|7023             0      340      367     2220 
18094 cv       bash                               0     3472     4043     6876 
 7023 cv       xfwm4 --display :0.0 --sm-c        0     5176     7027    22192 

From man smem :

   smem  reports  physical  memory usage, taking shared memory pages into account.  Unshared memory is reported as the USS (Unique Set Size).  Shared
   memory is divided evenly among the processes sharing that memory.  The unshared memory (USS) plus a  process's  proportion  of  shared  memory  is
   reported  as  the  PSS  (Proportional  Set  Size).   The USS and PSS only include physical memory usage.  They do not include memory that has been
   swapped out to disk.
4
27.01.2020, 20:55

Теги

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