PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : bsd: sehen, mit was ein prozess kommuniziert



mezzo mix
11.12.07, 19:58
Hallo,
welche Mittel fallen euch ein zu sehen, mit welchen anderen Prozessen ein Prozess redet. Für lokale Sockets fällt mir z.B. netstat ein. Was gibt es da noch für Möglichkeiten, wie etwa Signale. Wie kann ich sowas sichtbar machen? Alle Tips sind willkommen.

Grüße, mm

suck
20.12.07, 20:48
Da alle Vorschläge willkommen sind, schlage ich einfach mal vor den Kernel im Debug-Modus zu betreiben und/oder sich die passenden Stellen in Code anzusehen..

Als erstes sollte man (also Du :)) sich fragen, welche Arten der (indirekten) Kommunikation zwischen Prozessen (und nicht Threads!) überhaupt möglich sind. Spontan fallen mir z.B noch Dateien jeglicher Art ein, die N Prozesse lesen können (Stichwort: "everything is a file"). Erst danach kann man dann die einzelnen Wege seperat erörtern und spezifische Fragen stellen.

Wie genau stellst Du dir das "Reden" zwischen den Prozessen den vor?

PS: FreeBSD?

mezzo mix
21.12.07, 12:09
danke schon mal.


Da alle Vorschläge willkommen sind, schlage ich einfach mal vor den Kernel im Debug-Modus zu betreiben und/oder sich die passenden Stellen in Code anzusehen..

leider hab ich keine moeglichkeit am kernel, seinem verhalten etc. was zu aendern. ich muss also "von aussen" drauf schauen.


Wie genau stellst Du dir das "Reden" zwischen den Prozessen den vor?

mir sind da spontan sockets und signale eingefallen. kommunikation uebers netz kann ich sniffen. mit den signalen hab ich schon eher ein problem, da ich strace auf der maschine nicht zum laufen bekomme.




PS: FreeBSD?

es handelt sich um junos 8.5, welches zwar auf freebsd basiert, jedoch die aenderungen nicht veroeffentlicht werden. da ich mich mit bsds noch nicht so besonders gut auskenne, entgehen mir aber vielleicht bsd speziefische ansaetze, die es in der linuxwelt nicht gibt.

gruesse, mm

403
21.12.07, 12:25
truss -- trace system calls

mezzo mix
21.12.07, 12:53
hatte ich auch versucht, jedoch auch ohne erfolg. es scheint, als wuerde das system das benutzen dieser programme unterbinden. die einzige fehlermeldung, die ich bei beiden programmen bekomme ist: Authentication failure
weiter bin ich damit nicht gekommen.

gruesse, mm

solarix
22.12.07, 12:25
Wenn truss als root nicht geht, wuerde ich vermuten das Dein System buggy ist, truss funktioniert bei mir auf $BSD und$Sonne einwandfrei.

mezzo mix
04.01.08, 09:33
hmm, schwer zu sagen. koennte mir auch vorstellen, dass der hersteller nicht will, dass man zu viel ueber die interna der maschine herausfindet. ist ein betriebsystem von einem backbone router.

Stephanw
06.01.08, 18:39
Zur Interprozesskommunikation zählen

-gemeinsame Nutzung einer Datei (sehr stumpf, da hilft lsof weiter, um file-handles anzuzeigen)
-Unix Domain/Datagram Sockets, wie gesagt netstat
-Named Pipes (Siehe Dateien)
-Pipes (Funktion pipe() mit strace/truss beobachten)
-Semaphoren (Tool: ipcs; Syscalls semget(), semop(), semctl() tracen)
-Message Queues (Syscalls: msg*(), Tool: ipcs )
-Shared Memory (Syscalls: shm*(), Tool: ipcs )

Das sollte es so zimlich gewesen sein...

Gruß Stephan