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.