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