Есть ли способ перехватить межпроцессное взаимодействие в Unix / Linux?

Для перехвата / анализа сетевого трафика у нас есть утилита Wireshark .

У нас есть аналогичная утилита для перехвата всей межпроцессной связи между любыми двумя процессами в Unix / Linux?

Я создал некоторые процессы в памяти, и мне нужно рассказать, как они общаются друг с другом.

  • У одного конца трубы есть как чтение, так и запись fd?
  • Как определить способ подключения, используемый клиентом MySQL?
  • ipcs (1) эквивалент POSIX для системы V
  • `/ proc / $ PID / cwd`: есть ли эквивалент POSIX?
  • Может ли процесс, запущенный в контейнере linux, взаимодействовать с другим процессом, запущенным на ОС хоста через IPC?
  • Что после exec () в команде ls. Является ли родительский процесс распечаткой вывода на консоль или дочерний?
  • Портирование связующего IPC в Linux
  • Linux - проверьте статистику IPC
  • 2 Solutions collect form web for “Есть ли способ перехватить межпроцессное взаимодействие в Unix / Linux?”

    Это сильно зависит от механизма связи.

    • В самом прозрачном конце спектра процессы могут взаимодействовать с использованием интернет-сокетов (например, IP ). Затем wirehark или tcpdump могут отображать весь трафик, указывая его на интерфейс loopback.

    • На промежуточном уровне движение по трубам и разъемам unix можно наблюдать с помощью truss / strace / trace / …, швейцарской армейской цепной системы для отслеживания системы. Это может значительно замедлить процессы, поэтому может оказаться непригодным для профилирования.

    • На самом непрозрачном конце спектра есть разделяемая память. Основной принцип работы разделяемой памяти заключается в том, что в каждом задействованном процессе доступ полностью прозрачен, вам нужно только системные вызовы для настройки разделяемых областей памяти. Отслеживание этих обращений к памяти извне было бы затруднительным, особенно если вам нужно наблюдение, чтобы не нарушить время. Вы можете попробовать такие инструменты, как инструментарий трассировки Linux (требуется патч ядра) и посмотреть, можно ли извлечь полезную информацию; это та область, где я ожидаю, что Solaris будет иметь лучший инструмент (но я не знаю об этом).

      Если у вас есть источник, лучшим вариантом может быть добавление инструкций трассировки к ключевым функциям библиотеки. Это может быть достигнуто с помощью трюков LD_PRELOAD даже если у вас нет (цельного) источника, если у вас достаточно понимание потока управления частью программы, которая обращается к общей памяти.

    Это покажет, что процесс читает и пишет:

     strace -ewrite -p $PID 

    Это не чистый результат (показывает строки вроде: write (#,)), но работает! (и является однострочным: D) Возможно, вам также не понравится тот факт, что аргументы сокращены. Для управления этим параметром -s, который устанавливает максимальную длину строк.

    Он захватывает все потоки, поэтому вы можете каким-то образом отфильтровать их.

    Вы можете отфильтровать его:

     strace -ewrite -p $PID 2>&1 | grep "write(1" 

    показывает только вызовы дескриптора 1. 2> & 1 – перенаправить stderr на stdout, поскольку strace записывает stderr по умолчанию.

    Interesting Posts

    Как я могу проверить кодировку текстового файла … Действительно ли это, и что это такое?

    Javascript в Chromium очень медленный

    Проблема с созданием собственного атрибута на openldap

    Переименуйте файлы, чтобы добавить начальные нули в числа

    Удалить защиту от записи на флэш-накопителе USB

    Где установлен исходный код ядра RHEL7?

    SELinux: определение каталога отказавшего файла

    Где текущие обои хранятся в Kali Linux?

    Как удалить все файлы в каталоге?

    включение и доступ к нескольким компонентам в RHEL 6.6

    Возможно ли входить в систему как пользователь root без запроса интерактивного пароля?

    Игнорировать изменяемый размер «df -h» при использовании diff

    Заполнение табуляции внутри циклов, не работающих

    Определите изменение скорости передачи данных в формате USB и журнал.

    можно настроить громкость на моем ноутбуке вверх или вниз без необходимости входа?

    Linux и Unix - лучшая ОС в мире.