Vraag Hoe kan ik meer informatie krijgen over open pipes show in / proc in Linux?


In Linux als je naar binnen gaat /proc/<pid>/fd vaak ziet u uitvoer zoals:

lrwx------ 1 root root 64 Jul 30 15:14 0 -> /dev/null
lrwx------ 1 root root 64 Jul 30 15:14 1 -> /dev/null
l-wx------ 1 root root 64 Jul 30 15:14 10 -> pipe:[90222668]
lr-x------ 1 root root 64 Jul 30 15:14 11 -> pipe:[90222669]
l-wx------ 1 root root 64 Jul 30 15:14 13 -> pipe:[90225058]
lr-x------ 1 root root 64 Jul 30 15:14 14 -> pipe:[90225059]

Hoe krijg ik meer informatie over de open pijpen, zoals welk proces aan de andere kant is?


48
2017-07-30 22:18


oorsprong


lsof, van het vinden in zijn geheel /proc is langzaam. Kan iemand een effectievere oplossing bieden? - pihentagy


antwoorden:


Gelijk aan andere antwoorden, maar:

lsof | grep 90222668

Zal je beide kanten tonen, omdat beide uiteinden het 'pijtenummer' delen.


40
2017-07-31 15:55



Ah, natuurlijk. Werkt zoals verwacht. Je kunt zelfs het bestandsdescriptornummer vertellen en welk einde is de lezer en welke is de schrijver door te kijken naar de vierde kolom met uitvoer! - Kamil Kisiel
Ik denk dat dat nummer het inodenummer van de pijp voor pipefs is die je niet kunt aankoppelen. Ik ben op zoek naar een manier om de inode van bestandsnaamtoewijzingen te krijgen, maar dit is misschien de beste manier. Trouwens, ik ben dol op deze vraag :-) - Kyle Brandt♦
Op de een of andere manier werkt dit niet voor mij. Alles wat het afgeeft is de pijp zelf. - Rui Marques
lsof uitvoeren als standaardgebruiker geeft u mogelijk geen informatie van alle processen. Meestal heb je geen toestemming om de directory / proc / <pid> / fd van alle processen als niet-rootgebruiker te zien. - Andre Holzner
Ook wilt u misschien gebruiken lsof -n -P | grep 90222668 om onnodige naamopzoeken te voorkomen, wat het zou moeten versnellen. - Wodin


De enige manier om te achterhalen welk proces aan de andere kant is, is door alle processen in / proc door te nemen en te zien welke die pijp gebruiken (dat wil zeggen, die symlinks hebben in / proc / pid / fd naar dezelfde pipe-ID)


3
2017-07-31 00:45



Bedankt voor de tip. Een manier om dit te automatiseren is: ls -l /proc/*/fd/ | grep $PIPE_ID; ls -l /proc/*/fd/$FD | grep $PIPE_ID  De eerste ls-opdracht zal de bestandsdescriptors van beide uiteinden van de pijp afdrukken, terwijl de tweede u de proces-ID zal geven - Joao Costa


De meeste informatie die ik weet over open pijpen te krijgen is

lsof|grep FIFO

Nog steeds vertelt het slechts één kant ervan, ben ik bang.


1
2017-07-30 22:31



Dat is ongeveer hetzelfde als ik kan waarnemen van / proc, ik neem aan dat lsof het van dezelfde locatie haalt. - Kamil Kisiel