Was ist Web \ x20Co in lsof -i?

476
lonelyloner

Die letzten 2 Zeilen von lsof -i sind wie folgt dargestellt. Was sind diese? Ich verwende OpenSuse LEAP 42.2.

Web\x20Co 7066 user1 38u IPv4 76006 0t0 UDP *:43756  Web\x20Co 7066 user1 39u IPv6 76008 0t0 UDP *:46834 
4
`\ x20` ist ein Leerzeichen (` `). Daniel B vor 6 Jahren 0
Sie können oben mehr Informationen über den Prozess 7066 erhalten, indem Sie `ps aux | grep 7066`. Oder noch mehr Infos über ps -eo pid, Benutzer, Gruppe, Argumente, Etime, lstart | grep 7066`. Meine Vermutung wäre der Webserver (Apache). harrymc vor 6 Jahren 0
Haben Sie in Ihrem Computer eine von X20 hergestellte Komponente (möglicherweise einen Netzwerkcontroller) angeschlossen / eingebaut? harrymc vor 6 Jahren 0
Nicht wirklich. Es ist ein Raum. Der Name der ausführbaren Datei oder des Prozesses beginnt mit "Web Co". Sie können dies leicht replizieren, indem Sie eine Kopie von "socat" erstellen, "Web Content" nennen und dann eine Netzwerkverbindung herstellen. Daniel B vor 6 Jahren 0

2 Antworten auf die Frage

3
Chris Hill

Die \x20Zeichenfolge in der ersten Spalte ist ein Hexadezimalwert für ein ASCII-Zeichen, in diesem Fall das Leerzeichen. Die von lsof verwendete Ausgabeformatierung wird auf der Manpage lsof beschrieben.

Lsof only outputs printable (declared so by isprint(3)) 8 bit characters. Non-printable characters are printed in one of three forms: the C ``\[bfrnt]'' form; the control character `^' form (e.g., ``^@''); or hexadecimal leading ``\x'' form (e.g., ``\xab''). Space is non-printable in the COMMAND column (``\x20'') and printable elsewhere. 

Die Manpage beschreibt, dass für die Spalte COMMAND (links in der Beispielausgabe) das Leerzeichen als nicht druckbar behandelt wird.

1
Hastur

Das \x20ist ein Raum.

Das \x20ist ein Leerzeichen " ".
Das hexadezimale Präfix \xist eine der drei Möglichkeiten lsof, die nicht druckbaren Zeichen zu drucken .
Der Raum in der ASCII - Tabelle hat 32 - Wert in Dezimalzahlensystem, 20 in hex und 040 oct .

In der Regel werden nur Zeichen mit dem oktalen ASCII-Wert innerhalb von 040 und 176 von isprint [ isprint ] als "druckbar" betrachtet (siehe Tabelle). In dezimal sind die Zeichen in [32-126] enthalten.

Interessanterweise ist das Leerzeichen ein druckbares Zeichen für isprint[ isprint, isprint C ++ ], auch wenn es keine grafische Darstellung [*] hat und oft als Feldtrennzeichen verwendet wird.

Daher finden wir im Mann eine zusätzliche Zeile nur für den Raum [ 1 ] und in der Spalte COMMAND:

Lsof gibt nur druckbare (von isprint (3) so deklarierte ) 8-Bit- Zeichen aus .
Nicht druckbare Zeichen werden in einer von drei Formen gedruckt:

  • die C '\ [bfrnt]' Form;
  • das Steuerzeichen `^ '(zB` `@ @' ');
  • oder hexadezimal führende ' \ x'-Form (z. B. `` \ xab').

In der Spalte COMMAND (`` \ x20 '') ist kein Platz zum Ausdrucken und an anderer Stelle druckbar.

(Einzug und Fett sind meine)

Warum ist das Leerzeichen ein nicht druckbares Zeichen?

Interessant ist hier zu wissen, warum es als "nicht druckbar" gilt .
Es scheint aus Sicherheitsgründen, wie wir in den FAQs lesen können [ 2 ] :

14.5.1 Warum wird Leerzeichen in Befehlsnamen als nicht druckbares Zeichen betrachtet?

Space is considered an unprintable character in command names because it is sometimes possible to hide the full command name from scripts that parse ps(1) output by embedding a space in the name. 

Einige Worte mehr

Wenn Sie sich über diese Ausgabe ärgern, können Sie den Abschnitt AUSGABE FÜR ANDERE PROGRAMME des lsofMannes und die -FOptionsangaben lesen.

Wenn die Option -F angegeben wird, erzeugt lsof eine Ausgabe, die für die Verarbeitung durch ein anderes Programm geeignet ist, z. B. ein awk- oder Perl-Skript oder ein C-Programm.
...


[*] Hinweis: Es gibt eine weitere Funktion namens isgraph[ isgraph C ++ ], die prüft, ob c ein Zeichen mit grafischer Darstellung ist, aber für alle diese Zeichen praktisch wahr ist, als (mit isprint) gedruckt werden können, mit Ausnahme des Leerzeichens.