GNU/Linux >> Linux Esercitazione >  >> Linux

Ubuntu:avvia, arresta, riavvia i servizi

Quando un'applicazione viene eseguita in background, viene chiamata servizio. Questi sono essenziali per eseguire il sistema o le nostre applicazioni software. Alcuni dei servizi comuni che troverai sulla maggior parte dei server sono Apache, MySQL, NGINX, ecc. All'avvio del sistema, questi servizi sono configurati per l'avvio automatico.

Sto usando Ubuntu per ospitare i miei siti web. Uso MySQL anche per memorizzare i dati di tutti i miei siti web. A volte, eseguo aggiornamenti regolari ed è essenziale riavviare questi servizi. In questo tutorial impareremo vari modi per avviare, interrompere e riavviare i servizi in Ubuntu.

Diversi modi per avviare, interrompere e riavviare i servizi su Ubuntu

  1. comando systemctl
  2. comando di servizio
  3. script di avvio

Utilizzo di systemctl per avviare, interrompere e riavviare i servizi Ubuntu

Questo è il modo preferito per gestire i servizi Ubuntu. Se non sei sicuro del nome del servizio, puoi eseguire systemctl --all comando per elencare tutti i servizi. Tuttavia, potrebbero esserci centinaia di servizi in esecuzione, quindi è meglio filtrare l'elenco utilizzando grep comando.

Proviamo a scoprire i nomi dei servizi di MySQL e del server HTTP Apache.

# systemctl --all | grep -i mysql
  mysql.service                                                                          loaded    active   running   MySQL Community Server                                                       
# systemctl --all | grep -i apache
  apache2.service                                                                        loaded    active   running   The Apache HTTP Server                                                       
# 

Quindi, il nome del servizio MySQL è "mysql.service" e il nome del servizio del server HTTP Apache è "apache2.service".

Impariamo a gestire questi servizi usando il comando systemctl.

1. Interrompi il servizio utilizzando systemctl

# systemctl stop mysql.service 
#

Il comando non fornisce alcun output se l'esecuzione ha esito positivo.

2. Verifica dello stato del servizio utilizzando systemctl

Possiamo controllare lo stato del servizio utilizzando il comando seguente.

# systemctl status mysql.service 
● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Sat 2020-05-02 17:39:22 UTC; 9s ago
 Main PID: 26948 (code=exited, status=0/SUCCESS)

3. Avvia il servizio utilizzando systemctl

# systemctl start mysql.service 
# 
# systemctl status mysql.service 
● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2020-05-02 17:41:43 UTC; 3s ago
  Process: 30254 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid (code=exited, s
  Process: 30233 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
 Main PID: 30256 (mysqld)
    Tasks: 27 (limit: 2318)
   CGroup: /system.slice/mysql.service
           └─30256 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid

Si noti che quando abbiamo interrotto il servizio, il valore "Attivo" era inattivo (morto). Dopo aver avviato il servizio, viene modificato in attivo (in esecuzione).

4. Riavvia il servizio utilizzando systemctl

# systemctl restart apache2.service
# systemctl status apache2.service 
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Sat 2020-05-02 17:55:09 UTC; 8s ago

Suggerimento :non è necessario utilizzare il nome del servizio completo con il comando systemctl. Ad esempio, se eseguiamo "systemctl restart mysql", aggiungerà automaticamente ".service" ed eseguirà il comando "systemctl restart mysql.service".

Gestisci i servizi Ubuntu utilizzando il servizio Command

Possiamo elencare tutti i servizi usando service --status-all comando. Se necessario, usa il comando grep per filtrare il servizio che stai cercando.

# service --status-all | grep mysql
 [ + ]  mysql
#

Nel comando di servizio, dobbiamo prima specificare il nome del servizio e poi il comando da eseguire.

Interrompi un servizio:

# service mysql stop

Avvia un servizio:

# service mysql start

Riavvia un servizio:

# service mysql restart

Verifica dello stato del servizio:

# service mysql status
● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2020-05-02 18:19:34 UTC; 39s ago
  Process: 31768 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid (code=exited, s
  Process: 31746 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
 Main PID: 31770 (mysqld)
    Tasks: 27 (limit: 2318)
   CGroup: /system.slice/mysql.service
           └─31770 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid

Script di avvio di Ubuntu per la gestione dei servizi

Gli script di inizializzazione dei servizi si trovano in /etc/init.d/ directory. Possiamo utilizzare questi script per gestire i servizi. Tuttavia, non è consigliabile usarli più ed è meglio usare il comando systemctl.

Interrompi un servizio:

# /etc/init.d/mysql stop
[ ok ] Stopping mysql (via systemctl): mysql.service.
#

Avvia un servizio:

# /etc/init.d/mysql start
[ ok ] Starting mysql (via systemctl): mysql.service.
#

Riavvia un servizio:

# /etc/init.d/mysql restart
[ ok ] Restarting mysql (via systemctl): mysql.service.
#

Verifica dello stato del servizio:

# /etc/init.d/mysql status
● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2020-05-02 18:26:30 UTC; 17s ago

Problemi di autorizzazione all'avvio/arresto dei servizi

Se non hai effettuato l'accesso come utente root, i comandi precedenti ti chiederanno di fornire la password dell'utente root da eseguire. Se viene inserita la password errata, verrà generato l'errore di autenticazione fallita e il comando non verrà eseguito.

Se sei nell'elenco sudoers, puoi eseguire questi comandi come utente sudo. Se non sei nell'elenco sudoers, verrà visualizzato un messaggio di errore che indica che non sei nell'elenco sudoers e l'incidente verrà segnalato.

test@localhost:~$ systemctl stop mysql
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to stop 'mysql.service'.
Authenticating as: root
Password: 
polkit-agent-helper-1: pam_authenticate failed: Authentication failure
==== AUTHENTICATION FAILED ===
Failed to stop mysql.service: Access denied
See system logs and 'systemctl status mysql.service' for details.
test@localhost:~$ sudo systemctl stop mysql
[sudo] password for test: 
test is not in the sudoers file.  This incident will be reported.
test@localhost:~$ 

Quindi, se vuoi gestire qualsiasi servizio, assicurati di avere i privilegi necessari per eseguire questi comandi.

Conclusione

Abbiamo imparato vari modi per gestire i servizi su Ubuntu. Il comando systemctl è l'approccio preferito per avviare/arrestare/riavviare i servizi su Ubuntu. Tuttavia, gli script init stampano lo stato del comando, che può essere utile negli script della shell per eseguirli e ottenere immediatamente lo stato del comando.


Linux
  1. Avvia, arresta e riavvia i servizi sul server Linux RHEL 7 systemd

  2. Come avviare, arrestare e riavviare i servizi su un server dedicato Linux

  3. Avvia, arresta o riavvia i servizi in CentOS 8 - Processo passo dopo passo?

  4. Come avviare/arrestare/riavviare i servizi in CentOS Web Panel

  5. Come avviare, arrestare e riavviare il servizio Zimbra

Come avviare, interrompere o riavviare i servizi in Ubuntu 20.04 LTS

Come avviare, arrestare o riavviare i servizi in CentOS 8

Come avviare, arrestare e riavviare i servizi in Debian 10

Come riavviare i servizi sulla riga di comando di Ubuntu

Come avviare, arrestare o riavviare i servizi in Ubuntu

Come avviare, arrestare o riavviare i servizi di rete su Rocky Linux 8