Ich bin etwas verblüfft, dass in einem Docker-Container lsof -i
keine Ausgabe erfolgt.
Beispiel (alle Befehle / Ausgaben aus dem Container):
[1] root@ec016481cf5f:/# lsof -i
[1] root@ec016481cf5f:/# netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
Bitte beachten Sie auch, dass kein PID- oder Programmname angezeigt wird netstat
. fuser
gibt auch etwas verwirrende Ausgabe und ist nicht in der Lage, die PIDs auch zu lokalisieren.
Kann jemand Licht ins Dunkel bringen?
- Wie kann ich ersetzen
lsof -i
(um auch den Prozessnamen zu sehen !) - Warum ist die Ausgabe von auch
netstat
verkrüppelt?
Hinweis: Der Container wird mit der "ExecDriver": "native-0.1"
Docker-eigenen Ausführungsebene ausgeführt, nicht mit LXC.
[1] root@ec016481cf5f:/# fuser -a4n tcp 22
Cannot stat file /proc/1/fd/0: Permission denied
Cannot stat file /proc/1/fd/1: Permission denied
Cannot stat file /proc/1/fd/2: Permission denied
Cannot stat file /proc/1/fd/3: Permission denied
Cannot stat file /proc/1/fd/255: Permission denied
Cannot stat file /proc/6377/fd/0: Permission denied
Cannot stat file /proc/6377/fd/1: Permission denied
Cannot stat file /proc/6377/fd/2: Permission denied
Cannot stat file /proc/6377/fd/3: Permission denied
Cannot stat file /proc/6377/fd/4: Permission denied
22/tcp:
(Ich bin nicht besessen von der Permission denied
, weil diese Zahlen. Was mich verwirrt, ist die leere Liste der PIDs nach 22/tcp
.)
# lsof|awk '$1 ~ /^sshd/ && $3 ~ /root/ {print}'
sshd 6377 root cwd unknown /proc/6377/cwd (readlink: Permission denied)
sshd 6377 root rtd unknown /proc/6377/root (readlink: Permission denied)
sshd 6377 root txt unknown /proc/6377/exe (readlink: Permission denied)
sshd 6377 root 0 unknown /proc/6377/fd/0 (readlink: Permission denied)
sshd 6377 root 1 unknown /proc/6377/fd/1 (readlink: Permission denied)
sshd 6377 root 2 unknown /proc/6377/fd/2 (readlink: Permission denied)
sshd 6377 root 3 unknown /proc/6377/fd/3 (readlink: Permission denied)
sshd 6377 root 4 unknown /proc/6377/fd/4 (readlink: Permission denied)
sshd 6442 root cwd unknown /proc/6442/cwd (readlink: Permission denied)
sshd 6442 root rtd unknown /proc/6442/root (readlink: Permission denied)
sshd 6442 root txt unknown /proc/6442/exe (readlink: Permission denied)
sshd 6442 root 0 unknown /proc/6442/fd/0 (readlink: Permission denied)
sshd 6442 root 1 unknown /proc/6442/fd/1 (readlink: Permission denied)
sshd 6442 root 2 unknown /proc/6442/fd/2 (readlink: Permission denied)
sshd 6442 root 3 unknown /proc/6442/fd/3 (readlink: Permission denied)
sshd 6442 root 4 unknown /proc/6442/fd/4 (readlink: Permission denied)
sshd 6442 root 5 unknown /proc/6442/fd/5 (readlink: Permission denied)
Es gibt noch etwas mehr Ausgabe für den verbundenen Benutzer, die ebenfalls korrekt identifiziert wird, aber das war's. Es ist anscheinend unmöglich zu erkennen, von welchem Typ ( lsof -i
Begrenzung auf Internet-Sockets) ein bestimmtes "Objekt" ist.
sshd
-bezogenen) Zeilen angezeigt, von denen einige TCP-Sockets sein können TYPE
unknown
. Eigenartig. Die Ausgabe an meine Frage anhängen.
strace -s 2000 -o lsof.log lsof -i
Sie wahrscheinlich einige zusätzliche Einblicke in das, was blockiert wird.
strace
sich dieser in dem Behälter befindet. Spannende neue Sachen zum Lernen. Vielen Dank für Ihre Idee. Muss aber aufs Bett gehen.
lsof
Bericht? Das Gleiche?