Os comandos ps e top são limitados aos processos?

1

Se eu executar o comando ps ou top, eles listam apenas os processos ou listam os serviços e processos? Como você diz se uma determinada linha representa um processo ou serviço?

    
por PeanutsMonkey 13.03.2012 / 08:25

2 respostas

2

Em primeiro lugar, o termo serviço é raramente usado em um ambiente Linux. Mais comum é o termo daemon .

Embora ambos os termos descrevam o mesmo tipo de aplicativo, o termo serviço tem algumas propriedades anexadas a ele pelo uso do termo no ambiente do Windows.

O que distingue um daemon de um processo normal é simplesmente que um daemon é um processo em segundo plano e não é interagido pelo usuário. Mas o mais importante é que o termo daemon é apenas isso, um termo. Não há, no meu conhecimento, nenhum sinalizador no Linux que diga " Este processo é um daemon ".

Os daemons não são de forma alguma especiais. Nós apenas chamamos um certo tipo de programa de daemon. É também por isso que não há distinção sendo feita por ps ou top .

Mas se você quiser saber qual de seus processos em execução no momento é mais provável o que pensamos ao pensar em um daemon, tente ps axjf :

oliver@ubuntuServer:~$ ps axjf
 PPID   PID  PGID   SID TTY      TPGID STAT   UID   TIME COMMAND
    0     2     0     0 ?           -1 S        0   0:00 [kthreadd]
    2     3     0     0 ?           -1 S        0   0:01  \_ [ksoftirqd/0]
    2     5     0     0 ?           -1 S        0   0:00  \_ [kworker/u:0]
    2     6     0     0 ?           -1 S        0   0:00  \_ [migration/0]
    2     7     0     0 ?           -1 S        0   0:00  \_ [migration/1]
    2     9     0     0 ?           -1 S        0   0:00  \_ [ksoftirqd/1]
    2    10     0     0 ?           -1 S        0   0:09  \_ [kworker/0:1]
    2    11     0     0 ?           -1 S        0   0:00  \_ [migration/2]
    2    12     0     0 ?           -1 S        0   0:00  \_ [kworker/2:0]
    2    13     0     0 ?           -1 S        0   0:00  \_ [ksoftirqd/2]
    2    14     0     0 ?           -1 S        0   0:00  \_ [migration/3]
    2    15     0     0 ?           -1 S        0   0:00  \_ [kworker/3:0]
    2    16     0     0 ?           -1 S        0   0:00  \_ [ksoftirqd/3]
    2    17     0     0 ?           -1 S<       0   0:00  \_ [cpuset]
    2    18     0     0 ?           -1 S<       0   0:00  \_ [khelper]
    2    19     0     0 ?           -1 S<       0   0:00  \_ [netns]
    2    20     0     0 ?           -1 S        0   0:00  \_ [kworker/u:1]
    2    21     0     0 ?           -1 S        0   0:00  \_ [sync_supers]
    2    22     0     0 ?           -1 S        0   0:00  \_ [bdi-default]
    2    23     0     0 ?           -1 S<       0   0:00  \_ [kintegrityd]
    2    24     0     0 ?           -1 S<       0   0:00  \_ [kblockd]
    2    25     0     0 ?           -1 S<       0   0:00  \_ [ata_sff]
    2    26     0     0 ?           -1 S        0   0:00  \_ [khubd]
    2    27     0     0 ?           -1 S<       0   0:00  \_ [md]
    2    28     0     0 ?           -1 S        0   0:00  \_ [khungtaskd]
    2    29     0     0 ?           -1 S        0   0:00  \_ [kworker/3:1]
    2    30     0     0 ?           -1 S        0   0:03  \_ [kswapd0]
    2    31     0     0 ?           -1 SN       0   0:00  \_ [ksmd]
    2    32     0     0 ?           -1 SN       0   0:00  \_ [khugepaged]
    2    33     0     0 ?           -1 S        0   0:00  \_ [fsnotify_mark]
    2    34     0     0 ?           -1 S        0   0:00  \_ [ecryptfs-kthrea]
    2    35     0     0 ?           -1 S<       0   0:00  \_ [crypto]
    2    43     0     0 ?           -1 S<       0   0:00  \_ [kthrotld]
    2    44     0     0 ?           -1 S        0   0:00  \_ [scsi_eh_0]
    2    45     0     0 ?           -1 S        0   0:00  \_ [scsi_eh_1]
    2    67     0     0 ?           -1 S        0   0:00  \_ [kworker/1:1]
    2    68     0     0 ?           -1 S        0   0:09  \_ [kworker/0:2]
    2   110     0     0 ?           -1 S        0   0:00  \_ [kworker/1:2]
    2   190     0     0 ?           -1 S        0   0:00  \_ [scsi_eh_2]
    2   208     0     0 ?           -1 S        0   0:00  \_ [kworker/2:1]
    2   218     0     0 ?           -1 S<       0   0:00  \_ [kdmflush]
    2   235     0     0 ?           -1 S<       0   0:00  \_ [kdmflush]
    2   243     0     0 ?           -1 S        0   0:13  \_ [jbd2/dm-0-8]
    2   244     0     0 ?           -1 S<       0   0:00  \_ [ext4-dio-unwrit]
    2   508     0     0 ?           -1 S<       0   0:00  \_ [kpsmoused]
    2 20477     0     0 ?           -1 S        0   0:00  \_ [flush-252:0]
    0     1     1     1 ?           -1 Ss       0   0:00 /sbin/init
    1   303   302   302 ?           -1 S        0   0:00 upstart-udev-bridge --daemon
    1   306   306   306 ?           -1 Ss       0   0:00 udevd --daemon
  306   438   306   306 ?           -1 S        0   0:00  \_ udevd --daemon
  306   445   306   306 ?           -1 S        0   0:00  \_ udevd --daemon
    1   562   541   541 ?           -1 Sl     101   0:04 rsyslogd -c5
    1   600   599   599 ?           -1 S        0   0:00 upstart-socket-bridge --daemon
    1   612   612   612 ?           -1 Ss     102   0:00 dbus-daemon --system --fork --activation=upstart

Isso faz parte da saída de uma instalação de servidor Ubuntu relativamente nova. A saída deve ser hierárquica, o que deve facilitar a identificação dos processos do sistema.

Como nesta parte da mesma saída ps . Você pode ver claramente, a cadeia começou com o sshd (o daemon SSH), no qual eu entrei e criei uma sessão de usuário para mim. Nisso, bash foi iniciado e no bash eu tenho um background vi process e meu ps acabei de executar.

 8053 20352 20352 20352 ?           -1 Ss       0   0:00  \_ sshd: oliver [priv]
20352 20378 20352 20352 ?           -1 S     1000   0:00      \_ sshd: oliver@pts/0
20378 20379 20379 20379 pts/0    20570 Ss    1000   0:00          \_ -bash
20379 20569 20569 20379 pts/0    20570 T     1000   0:00              \_ vi
20379 20570 20570 20379 pts/0    20570 R+    1000   0:00              \_ ps axjf

Portanto, olhando para essas duas partes de ps output, você deve ser capaz de distinguir claramente entre daemons e processos do usuário.

    
por 13.03.2012 / 11:19
2

Os serviços são processos, portanto, ambos são listados por ps. Eles simplesmente não são distinguidos claramente. Um serviço é um processo que ouve solicitações ou conexões.

Você pode usar o netstat para listar processos que estão ouvindo (e que são, portanto, parte de um serviço)

    
por 13.03.2012 / 08:32

Tags