Eu criei esse script, que ouve os caracteres recebidos em um canal codificado e tenta eval
desses caracteres. Eu chamo meu script loop_executor.sh
Isso é tudo o que contém:
!/bin/bash
while :
do
x='cat /tmp/console_test';
echo "received $x"
eval $x
done;
Eu executo meu script com um duplo clique.
Eu quero ver quais arquivos este processo abriu:
> $ 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 aponta para um "pipe". Bem, eu sei que arquivo ele usa, porque eu sou o único que codificou o arquivo no script, mas eu gostaria de obter essa informação (se possível) de outra fonte (já que meu script é apenas um POC, e poderia ser um processo cujo código não está aberto para mim).
O que eu entendi é que pipe:[225812]
não aponta para o inode do meu arquivo.
ll -i /tmp/console_test
16519395 prw-r--r-- 1 userX domain^users 0 Oct 20 18:14 /tmp/console_test|
Então, minha pergunta é: Se processess pode abrir pipes, que são arquivos em meu sistema, posso determinar quais arquivos esses pipes "corresponderam"?
Estou usando o Ubuntu 12.04, se isso importa.
[EDITAR]
Encontrei o processo cat
que estava lendo meu canal. Tem o mesmo tubo aberto que o processo pai, por isso não faz muita diferença aqui - > eu ainda não sei apenas olhando para pipe:[225812]
qual arquivo - se algum - é isso.