Как найти файл, соответствующий трубе, открытому процессом?

Я создал этот скрипт, который прослушивает символы, полученные на жестком канале, и пытается eval эти символы. Я вызываю свой скрипт loop_executor.sh Это все, что он содержит:

 !/bin/bash while : do x=`cat /tmp/console_test`; echo "received $x" eval $x done; 

Я выполняю свой скрипт с двойным щелчком.

Я хочу посмотреть, какие файлы этот процесс открыт:

 > $ pgrep loop_executor.sh 1234 > $ ll /proc/1234/fd dr-x------ 2 userX domain^users 0 Oct 20 17:57 ./ dr-xr-xr-x 9 userX domain^users 0 Oct 20 17:57 ../ lr-x------ 1 userX domain^users 64 Oct 20 17:57 0 -> /dev/null l-wx------ 1 userX domain^users 64 Oct 20 17:57 1 -> /dev/null l-wx------ 1 userX domain^users 64 Oct 20 17:57 2 -> /home/local/groupX/userX/.xsession-errors lr-x------ 1 userX domain^users 64 Oct 20 17:58 255 -> /home/local/groupX/userX/Desktop/loop_executor.sh* lr-x------ 1 userX domain^users 64 Oct 20 17:57 3 -> pipe:[225812] 

FD 3 указывает на «трубу». Ну, я знаю, какой файл он использует, потому что я тот, который жестко закодировал файл в скрипте, но я хотел бы получить эту информацию (если возможно) из другого источника (так как мой скрипт – это просто POC, и это может быть процессом, код которого не открыт для меня).

Я понял, что pipe:[225812] не указывает на pipe:[225812] моего файла.

 ll -i /tmp/console_test 16519395 prw-r--r-- 1 userX domain^users 0 Oct 20 18:14 /tmp/console_test| 

Поэтому мой вопрос: если processess может открывать каналы, которые являются файлами в моей системе, могу ли я определить, к каким файлам относятся эти «трубы»?

Я использую ubuntu 12.04, если это имеет значение.

[EDIT] Нашел процесс cat который читал из моей трубы. Он имеет ту же открытую трубу, что и ее родительский процесс, поэтому здесь не имеет большого значения -> я до сих пор не знаю, просто посмотрев на pipe:[225812] какой файл -f любой – это.

One Solution collect form web for “Как найти файл, соответствующий трубе, открытому процессом?”

У вашего скрипта нет /tmp/console_test . Ваш скрипт читается из трубы, которая связана с процессом cat ; вот что вы видите в своем вопросе.

Найдите процесс cat и проверьте, чтобы он вышел.

Вы, вероятно, хотите что-то вроде этого:

 while read x; do echo "received $x" eval "$x" done < /tmp/console_test 

Обратите внимание на добавленные котировки вокруг параметра для eval

  • Файлы Valgrind / usr / lib не являются обычными файлами Linux
  • zcat файл по строкам?
  • Что означает ./ (точка слэш) в linux?
  • Только цветные файлы в соответствии с типами файлов?
  • выпуск разрешения файла по умолчанию для пользователя rhel 6
  • Разрешение NFS отклонено
  • Как я могу создать резервную копию каталога в NTFS, сохраняя атрибуты файлов Unix?
  • Как перемещаться по селекторам файлов и каталогов диалогового окна?
  • Способы консолидации музыкальной папки
  • Скопируйте последние n-строки из одного файла в другой
  • Как перечислить файлы блокировки процессов?
  • Interesting Posts

    Практическое использование uname в chroot?

    Linux Mint: как избежать приостановки воспроизведения музыки

    Удобная программа для запуска приложений LXDE

    Смогу ли я использовать интерфейс старой моды в Gnome 3?

    Могу ли я создавать переопределенные dns, похожие на запись в / etc / hosts без доступа root

    извлечь диск по имени пути / тома

    Строка Keep, содержащая X в первых двух полях

    Почему ssh-copy-id с файлом non-`id_rsa` на Mac OSX говорит мне, что мой ключ уже существует?

    Командная строка: как я могу подключиться к беспроводной сети без запуска процесса автоконфигурации DHCP?

    Получение количества файлов во время итерации через каталоги и папки

    Какой дистрибутив Linux подходит для развития серверов и несколько прост в использовании?

    Разбор .txt-файла для генерации .csv

    Настройка сканера Canon MX360

    удалять дубликаты на основе значения другого столбца

    Как настроить linux для автоматического переключения между LAN и WLAN без использования сетевого менеджера

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