O que é Web \ x20Co em lsof -i

4

As últimas 2 linhas de lsof -i são mostradas abaixo. O que são aqueles? Eu uso o OpenSuse LEAP 42.2.

Web\x20Co 7066 user1   38u  IPv4  76006      0t0  UDP *:43756 
Web\x20Co 7066 user1   39u  IPv6  76008      0t0  UDP *:46834
    
por lonelyloner 29.03.2017 / 21:46

2 respostas

3

A string \x20 na primeira coluna é um valor hexadecimal para um caractere ASCII, nesse caso, o caractere de espaço. A formatação de saída usada pelo lsof é descrita na página do manual 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.

A página man descreve que, para a coluna COMMAND (mostrada à esquerda na saída de exemplo), o caractere de espaço é tratado como não imprimível.

    
por 27.11.2017 / 04:04
1

O \x20 é um espaço.

O \x20 é um espaço " ".
O prefixo hexadecimal \x é uma das três formas de lsof imprimir os caracteres não imprimíveis .
O espaço na tabela ASCII tem valor 32 no sistema numeral decimal, 20 em hex e 040 oct .

Como regra, apenas os caracteres com o valor ASCII octal entre 040 e 176 são considerados "imprimíveis" por isprint [isprint ] (veja a tabela). Em decimal são incluídos os caracteres dentro de [32-126].

É interessante notar que o espaço é um caractere imprimível para isprint [ isprint , isprint C ++ ] , mesmo que não tenha representação gráfica [*] e é frequentemente usado como um separador de campos.

Assim, no homem, encontramos uma linha suplementar apenas para o espaço [ 1 ] e na coluna COMMAND:

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.

(recuo e negrito são meus)

Por que o espaço é um caractere não imprimível?

Interessante aqui é saber por que é considerado "não imprimível" .
Parece, por razões de segurança, como podemos ler no FAQ [ 2 ] :

14.5.1 Why is space considered a non-printable character in command names?

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.

Algumas palavras mais

Se você está irritado com esta saída, você pode considerar ler o OUTPUT FOR OTHER PROGRAMS das especificações da opção lsof man e -F :

When the -F option is specified, lsof produces output that is suitable for processing by another program - e.g, an awk or Perl script, or a C program.
...

[*] Nota: Existe outra função chamada isgraph [ isgraph C ++ ] que verifica se c é um caractere com representação gráfica, mas praticamente responde a todos os caracteres que podem ser impressos (como isprint), exceto o caractere de espaço.

    
por 28.11.2017 / 13:35