logo

Demone Linux

Cos'è un demone?

Un demone è un tipo di programma su un sistema operativo simile a UNIX che viene eseguito in background in modo discreto, anziché all'accesso diretto di un utente. Attende di essere attivato dalla comparsa di una particolare condizione o evento.

Tipicamente, i sistemi simili a UNIX eseguono numerosi demoni, principalmente per soddisfare le richieste di servizi attraverso altri sistemi sulla rete, per l'attività hardware e anche per rispondere ad altri programmi.

Esempi di condizioni o azioni che potrebbero attivare i demoni nell'attività possono essere una data o ora particolare, il passaggio di un intervallo di tempo descritto, la ricezione di una richiesta web o un'e-mail creata da una linea di comunicazione specifica e un file che arriva in una directory specifica.

quadro primaverile

Non è obbligatorio che l'autore di una condizione o azione sappia che il demone è in ascolto.

Tuttavia, i programmi spesso implementano un'azione solo perché sanno che attiverebbe implicitamente un demone.

Un demone è anche chiamato processi in background. È un programma UNIX o Linux che viene eseguito in background. Quasi ogni demone contiene nomi che terminano con la lettera 'd'. Ad esempio, sshd, gestisce le connessioni di accesso remoto SSH, o il demone httpd che gestisce il server Apache. Spesso Linux avvia i demoni all'avvio.

Vari script di shell vengono salvati nella directory /etc/init.d. Questi script vengono utilizzati per avviare e arrestare i demoni.

Processi Linux

Di solito, i demoni vengono istanziati come processi. Questi processi sono le istanze in esecuzione o in esecuzione di un programma. Un processo è gestito dal kernel che è il nucleo del sistema operativo e assegna tutti i numeri identificativi speciali del processo.

In Linux, ci sono principalmente tre tipi comuni di processi che sono i seguenti:

  • Lotto
  • Interattivo
  • Demone

Il processo batch viene inviato tramite una coda di processi e non è correlato alla riga di comando. Questi processi sono particolarmente adatti per eseguire operazioni ricorrenti se l'utilizzo del sistema è basso.

Il processo interattivo viene eseguito in modo interattivo dall'utente sulla riga di comando.

Il demone è identificato da un sistema come quei processi il cui processo genitore contiene un PID pari a uno.

Sempre, definisce il processo init. Il processo init è il processo iniziale che viene avviato quando viene avviato un sistema Linux e rimane nel sistema fino allo spegnimento del sistema.

L'init può adottare qualsiasi tipo di processo il cui processo genitore termina o muore senza attendere lo stato del processo figlio.

Quindi, la tecnica di base per lanciare il demone è dividere o biforcare due o una volta e anche consentire ai processi genitore di terminare mentre il processo figlio inizia a implementare la sua funzione generale.

Storia dei demoni

Alcuni demoni vengono pubblicati dagli script init del System V. Si tratta di script o brevi programmi che possono essere eseguiti automaticamente all'avvio del sistema. Potrebbero essere riprodotti a intervalli o sopravvivere per la durata della sessione.

mysql crea utente

Ora diversi demoni vengono avviati solo quando necessario e da un demone (xinetd) invece di essere eseguiti continuamente. xinetd è conosciuto come super server TCP/IP.

Viene avviato all'avvio e inoltre ascolta varie porte assegnate ai processi elencati nel file di configurazione, ad esempio /etc/xinetd.conf o /etc/inetd.conf.

È anche possibile avviare manualmente alcuni demoni inclusi per essere lanciati dai programmi applicativi e dal sistema operativo. Tutti i demoni hanno uno script individuale in diversi sistemi operativi simili a UNIX, incluso Linux, con il quale può essere riavviato e terminato.

La gestione di questi script è implementata in base ai runlevel. Il runlevel può essere definito come uno stato operativo o di configurazione di un sistema che consente la disponibilità solo di alcuni processi selezionati. L'avvio di un runlevel distinto può supportare la risoluzione di determinati problemi o questioni, inclusa la correzione degli errori di sistema.

Punti chiave dei demoni

Alcuni importanti punti chiave dei Demoni sono spiegati di seguito:

ops
  • La parola demone deriva dalla metodologia greca demone. Questi erano esseri soprannaturali che si trovano tra i mortali e gli dei e che possedevano poteri o conoscenze unici.
  • Nel 1963 il termine demone fu inizialmente applicato all'interno di un contesto di sistema nel progetto pionieristico MAC con l'aiuto dell'IBM 7094.
  • È stato ispirato dal demone della termodinamica e della fisica di Maxwell che era un agente astratto che supportava l'ordinamento di molecole a velocità distinte e lavorava instancabilmente in background.
  • Successivamente, il termine è stato utilizzato per descrivere i processi di background che hanno svolto instancabilmente i compiti del sistema di implementazione.
  • Il primo computer demone era un programma che creava automaticamente backup su nastro.
  • Questo termine è stato utilizzato per l'uso del computer. Era una forma abbreviata di Disk and Execution MONitor.
  • Vari programmi chiamati servizi funzionano come demoni sul sistema operativo Microsoft Windows. Tuttavia, a volte con questi sistemi viene applicata anche la parola demone.

Implementazione dei demoni

Sistemi come Unix

Il processo di un sistema simile a Unix è un demone se il suo processo genitore muore e questo demone viene nominato processo init (processo numero 1) come processo genitore e non contiene alcun terminale di controllo in modo strettamente tecnico.

Un demone potrebbe tuttavia essere qualsiasi processo in background, indipendentemente dal fatto che sia figlio del processo init o meno.

La tecnica di base per una procedura diventa un demone sul sistema UNIX quando la procedura viene avviata tramite la riga di comando o script di avvio come lo script System Starter o lo script init, implica:

  • Eliminazione facoltativa delle variabili non necessarie attraverso l'ambiente.
  • Esecuzione come attività in background uscendo e biforcandosi. Consente al genitore del demone (processo di avvio o shell) di ricevere notifiche di uscita e continuare la normale esecuzione.
  • Distacco attraverso la sezione invocante, solitamente eseguita da un'operazione individuale, setsid():
    • Dissociarsi attraverso il controllo tty.
    • Creare una nuova sessione e diventare il leader della sessione di quella sessione.
    • Diventare il leader del gruppo di processo.
  • Se il demone desidera assicurarsi di non ereditare un nuovo controllo tty, potrebbe uscire e biforcarsi nuovamente. Ciò significa che non è più alcun leader della sessione all'interno della nuova sessione e non può ereditare alcun controllo tty.
  • Impostazione della directory di lavoro corrente come directory root in modo che il processo non prenda in uso alcuna directory che potrebbe trovarsi su un file system montato.
  • Modificare umask su 0 per consentire create(), open() e altre chiamate del sistema operativo per facilitare la loro maschera di autorizzazione e non fare affidamento su tutto il chiamante umask.
  • Reindirizzare i descrittori di file 0, 1 e 2 per i flussi standard (stderr, stdout, stdin) su un file di registro o /dev/null e chiudere ogni altro file descrittore acquisito tramite il processo principale.

Quando il processo inizia da qualsiasi demone del super server come systemd, launchd o inetd, il super server implementerà quelle funzioni per questo processo, ad eccezione di quei demoni vecchio stile non trasformati in esecuzione sotto systemd e descritti come server datagram multithread e Type=forking su inetd.

aggiornando java

MS-DOS

Il programma simile a un demone è stato eseguito come software di terminazione e permanenza (in breve TSR) all'interno della piattaforma DOS di Microsoft.

Windows NT

I programmi conosciuti come servizi Windows implementano le funzioni di questi demoni sui sistemi Microsoft Windows NT. Vengono eseguiti come processi e solitamente non interagiscono con mouse, tastiera e monitor. Potrebbero essere avviati con l'aiuto del sistema operativo al momento dell'avvio.

I servizi Windows vengono arrestati, avviati e configurati manualmente dal Pannello di controllo (un programma di configurazione/controllo dedicato), dal sistema di scripting PowerShell o dai comandi net stop e net start, l'elemento controller del servizio della gestione del controllo del servizio.

Qualsiasi applicazione Windows tuttavia può implementare le responsabilità di un demone non solo come un servizio e alcuni demoni Windows contengono l'opzione di esecuzione come un normale processo.

MacOS classico e Mac OS

Vari servizi e funzionalità opzionali sono stati facilitati da quei file caricati all'avvio che ricostruiscono il sistema operativo sul classico Mac OS.

Questi erano chiamati pannelli di controllo ed estensioni di sistema. Le versioni successive del sistema operativo Mac standard li hanno ampliati con applicazioni in background senza volto a tutti gli effetti.

Queste applicazioni sono applicazioni regolari che vengono eseguite in background. Questi erano ancora specificati come normali estensioni di sistema per l'utente.

macOS è un sistema Unix e utilizza demoni. MacOS applica il termine del servizio per designare il software che implementa le funzioni scelte tramite il menu dei servizi invece di applicare quel termine come fa Windows per i demoni.

Funzioni tipiche dei demoni

  • Esegui azioni pianificate come cron.
  • Monitora sistemi come l'array RAID o lo stato del disco rigido.
  • Rispondere alla richiesta della rete e aprire la porta di rete (come la porta 80).

Come possiamo avviare, riavviare o arrestare i demoni per un prompt della shell?

Dobbiamo applicare i comandi di servizio come di seguito:

 service daemon-name-here start service daemon-name-here stop service daemon-name-here restart 

Nell'esempio seguente, stelle, riavvio e arresto.

 service httpd start service httpd stop service httpd restart 

Come controlliamo l'elenco di ciascun demone in esecuzione?

Per verificare lo stato di ogni demone installato, digitare:

 service - -status-all 

Pianificazione del nostro demone

Che demone farà?

Il demone deve implementare una cosa e implementarla bene. Quella singola cosa potrebbe essere complicata come gestire molte caselle di posta su più di un dominio o facile come chiamare sendmail per inviarlo a un amministratore e specificare un rapporto.

Dobbiamo avere un'idea migliore di cosa deve fare un demone in ogni caso. Interagirà con alcuni altri demoni che potremmo specificare o meno. C'è anche un'altra cosa da esaminare.

jvm

Interazione

I demoni non devono mai avere alcuna comunicazione con l'utente direttamente tramite un terminale. Ogni comunicazione passa attraverso alcuni tipi di interfaccia (che potremmo o meno dover specificare), che potrebbero essere complicati come la GUI+GTK o facili come un set individuale.

La struttura di base del demone

Daemon deve implementare alcuni lavori domestici di basso livello per prepararsi al lavoro vero e proprio all'avvio. Implica alcuni passaggi che sono i seguenti:

  • Disconnettere un super processo (processo genitore)
  • Modifica la maschera della modalità file (umask)
  • Apri i log per scrivere
  • Crea uno speciale Session ID (in breve SID)
  • Modifica la directory di lavoro (corrente) in un luogo sicuro
  • Chiudi i descrittori di classificazione del file
  • Inserisci il codice demone originale

Elenco di servizi demone per sistemi simili a Unix e Linux

    anacronistico:Esegue azioni cron ritardate all'avvio.amd:Sta per Auto Mount Daemon.eccetera:Esegue i lavori in coda applicando allo strumento.amd:Sta per Advanced Power Management Daemon.crondo:È un demone di pianificazione delle attività.autof:Aiuta il demone di montaggio automatico consentendo lo smontaggio e il montaggio dei dispositivi su richiesta.DHCP:Sta per Dynamic Host Configuration Protocol. Inoltre, è un server di protocollo Bootstrap Internet.tazze:Sta per demone della stampante CUPS.ftpd:Sta per FTP Server Daemon.httpd:È un demone del server Web.recintato:Può instradare i demoni che sostituiscono egpup e instradare e gestire più di un protocollo di instradamento.lpd:Sta per Line Printer Daemon.imapd:È il demone del server imap.inetd:Sta per Internet Superserver Daemon.memchached:È un demone di memorizzazione nella cache degli oggetti distribuito in memoria.mysql:È un demone del server di database.montato:È un demone di montaggio.nfsd:Sta per Demone di condivisione file di rete.di nome:È un demone del server DNS.nflock:Viene applicato per avviare e arrestare i servizi di blocco dei file nfs.ntpd:Sta per demone del servizio Network Time Protocol.Nmbd:Sta per Network Message Block Daemon.postgreSQL:È un demone del server di database.suffisso:È un agente di trasporto della posta e viene utilizzato in sostituzione di Sendmail.rpcbind:Sta per Remote Procedure Call Bind Daemon.instradato:Gestisce le tabelle di routing.smbd:È un demone Samba.inviare una mail:È un demone dell'agente di trasferimento della posta.smtpd:Sta per Simple Mail Transfer Protocol Daemon.calamaro:È un demone del server proxy che memorizza nella cache delle pagine Web.snmpd:Sta per Simple Network Management Protocol Daemon.sincronizzato:Può mantenere sincronizzati vari file system insieme alla memoria di sistema.sshd:È un demone del server Secure Shell.syslogd:Sta per demone di registrazione del sistema.telnetd:È un demone del server Telnet.tcpd:Dispone di un wrapper di servizi che può limitare l'autorizzazione ai servizi basati su inetd da host.deny e host.allow.vsftpd:Sta per Very Secure FTP Daemon.webmin:È un demone del server di amministrazione basato sul Web.xntd:È un demone del server temporale di rete.xinetd:È un demone superserver Internet avanzato.