GNU/Linux >> Linux Esercitazione >  >> Linux

Disattivare un servizio systemd dopo il periodo di inattività

L'attivazione del socket in systemd può funzionare in due modalità:

  • Accept=true :systemd mantiene il socket in ascolto, accetta ogni connessione in entrata, genera un nuovo processo per ogni connessione e gli passa il socket stabilito. Questo caso è banale (ogni processo termina quando è terminato).
  • Accept=false :systemd crea il socket di ascolto e lo controlla per la connessione in entrata. Non appena ne entra uno, systemd genera il servizio e gli passa il socket di ascolto. Il servizio accetta quindi la connessione entrante ed eventuali successive. Systemd non tiene più traccia di ciò che accade sul socket, quindi non può rilevare l'inattività.

In quest'ultimo caso, penso che l'unica soluzione veramente pulita sia modificare l'applicazione per farla uscire quando rimane inattiva per un po' di tempo. Se non puoi farlo, una soluzione rozza potrebbe essere quella di impostare cron o un timer di sistema per terminare il servizio una volta all'ora. Questa potrebbe essere un'approssimazione ragionevole se il servizio viene generato solo molto di rado.

Si noti che il caso d'uso è probabilmente piuttosto raro. Un processo seduto in poll()/select() in attesa di una connessione non consuma alcun tempo di CPU, quindi l'unica risorsa utilizzata in quella situazione è la memoria. Probabilmente è sia più semplice che più efficiente impostare semplicemente uno scambio e lasciare che il kernel decida se vale la pena mantenere il processo sempre nella RAM oppure no.


Linux
  1. 10 pratici comandi di sistema:un riferimento

  2. Come creare un servizio Systemd in Linux

  3. Aggiunta di un nuovo servizio a Linux systemd

  4. Scrivere file di servizio Systemd di base?

  5. Centos - Systemd uccide il servizio immediatamente dopo l'avvio?

Gestisci l'avvio usando systemd

Comandi Systemctl per gestire il servizio Systemd

Utilizzo delle funzionalità di systemd per proteggere i servizi

Gestire cgroup con systemd

Come avviare un servizio systemd dopo l'accesso dell'utente e interromperlo prima del logout dell'utente

Il sistema rifiuta SSH e si blocca all'avvio dopo l'installazione di systemd