Что такое Web \ x20Co в lsof -i?

466
lonelyloner

Последние 2 строки lsof -i показаны ниже. Что это такое? Я использую 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` является символом пробела (` `). Daniel B 6 лет назад 0
Вы можете получить больше информации о процессе 7066, используя `ps aux | grep 7066`. Или даже больше информации от `ps -eo pid, user, group, args, etime, lstart | grep 7066`. Я думаю, что веб-сервер (Apache). harrymc 6 лет назад 0
Есть ли у вас в компьютере подключенный / встроенный компонент X20, возможно, сетевой контроллер? harrymc 6 лет назад 0
Нет, правда. Это пространство. Фактическое имя исполняемого файла или процесса начинается с «Web Co». Вы можете легко скопировать это, сделав копию `socat`, назвав ее` Web Content`, а затем сделав сетевое соединение, используя это. Daniel B 6 лет назад 0

2 ответа на вопрос

3
Chris Hill

\x20Строка в первом столбце представляет собой шестнадцатеричное значение для символа ASCII, в этом случае символ пробела. Форматирование вывода, используемое lsof, описано на справочной странице lsof.

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. 

Страница man описывает, что для столбца COMMAND (показанного слева в примере вывода) символ пробела обрабатывается как непечатный.

1
Hastur

Это \x20пространство.

Это \x20пространство " ".
Шестнадцатеричный префикс \xявляется одним из 3 способов lsofпечати непечатных символов.
Пробел в таблице ASCII имеет значение 32 в десятичной системе счисления, 20 в шестнадцатеричном и 040 окт .

Как правило, только символы со восьмеричным значением ASCII в пределах 040 и 176 считаются «печатными» для isprint [ isprint ] (см. Таблицу). В десятичном виде включены символы в пределах [32-126].

Интересно отметить, что пробел является печатным символом для isprint[ isprint, isprint C ++ ], даже если он не имеет графического представления [*] и часто используется в качестве разделителя полей.

Следовательно, в человеке мы находим дополнительную строку только для пробела [ 1 ] и в столбце КОМАНДА:

Lsof выводит только печатаемые (объявленные так isprint (3) ) 8-битные символы .
Непечатные символы печатаются в одной из трех форм:

  • форма C '\ [bfrnt]';
  • форма управляющего символа `^ '(например,` `^ @' ');
  • или шестнадцатеричная ведущая форма '\ x' (например, `` \ xab '').

Пробел нельзя распечатать в столбце COMMAND (`\ x20 ') и распечатать в другом месте.

(отступ и жирный шрифт мои)

Почему пробел не печатается?

Здесь интересно узнать, почему он считается «не для печати» .
По соображениям безопасности, как мы можем прочитать из FAQ [ 2 ] :

14.5.1 Почему пробел считается непечатаемым символом в именах команд?

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. 

Еще несколько слов

Если вас раздражает этот вывод, вы можете прочитать раздел « ВЫХОД ДЛЯ ДРУГИХ ПРОГРАММ » этого lsofчеловека и -Fспецификации опций:

Если указана опция -F, lsof создает вывод, который подходит для обработки другой программой, например, скриптом awk, Perl или программой на Си.
...


[*] Примечание: существует другая функция с именем isgraph[ isgraph C ++ ], которая проверяет, является ли символ c графическим представлением, но практически отвечает true для всех тех символов, которые могут быть напечатаны (например, isprint), кроме символа пробела.

Похожие вопросы