GNU/Linux >> Znalost Linux >  >> Linux

Ubuntu – Start, Stop, Restart Services

Když aplikace běží na pozadí, nazývá se služba. Ty jsou nezbytné pro provoz systému nebo našich softwarových aplikací. Některé z běžných služeb, které najdete na většině serverů, jsou Apache, MySQL, NGINX atd. Když se systém spustí, jsou tyto služby nakonfigurovány tak, aby se spouštěly automaticky.

K hostování svých webových stránek používám Ubuntu. Také používám MySQL k ukládání všech dat mých webových stránek. Někdy provádím pravidelné aktualizace a je nezbytné tyto služby restartovat. V tomto tutoriálu se naučíme různé způsoby, jak spouštět, zastavovat a restartovat služby v Ubuntu.

Různé způsoby spuštění, zastavení a restartu služeb na Ubuntu

  1. příkaz systemctl
  2. příkaz služby
  3. spouštěcí skripty

Používání systemctl ke spuštění, zastavení a restartování služeb Ubuntu

Toto je preferovaný způsob správy služeb Ubuntu. Pokud si nejste jisti názvem služby, můžete spustit systemctl --all příkaz pro výpis všech služeb. Mohou však být spuštěny stovky služeb, takže je lepší filtrovat seznam pomocí grep příkaz.

Zkusme zjistit názvy služeb serveru MySQL a Apache HTTP.

# 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                                                       
# 

Název služby MySQL je tedy „mysql.service“ a název služby HTTP serveru Apache je „apache2.service“.

Pojďme se naučit, jak tyto služby spravovat pomocí příkazu systemctl.

1. Zastavte službu pomocí systemctl

# systemctl stop mysql.service 
#

Pokud je provedení úspěšné, příkaz nedává žádný výstup.

2. Kontrola stavu služby pomocí systemctl

Stav služby můžeme zkontrolovat pomocí níže uvedeného příkazu.

# 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. Spusťte službu pomocí 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

Všimněte si, že když jsme službu zastavili, hodnota „Aktivní“ byla neaktivní (mrtvá). Po spuštění se služba změní na aktivní (běžící).

4. Restartujte službu pomocí 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

Tip :S příkazem systemctl není nutné používat úplný název služby. Pokud například spustíme „systemctl restart mysql“, automaticky k němu připojí „.service“ a spustí příkaz „systemctl restart mysql.service“.

Spravujte služby Ubuntu pomocí příkazu služby

Všechny služby můžeme vypsat pomocí service --status-all příkaz. V případě potřeby použijte příkaz grep k odfiltrování služby, kterou hledáte.

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

V příkazu služby musíme nejprve zadat název služby a poté příkaz, který se má provést.

Zastavení služby:

# service mysql stop

Spustit službu:

# service mysql start

Restartování služby:

# service mysql restart

Kontrola stavu služby:

# 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

Ubuntu init skripty pro správu služeb

Skripty init služeb jsou umístěny v /etc/init.d/ adresář. Tyto skripty můžeme použít ke správě služeb. Už je však nedoporučujeme používat a je lepší použít příkaz systemctl.

Zastavení služby:

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

Spustit službu:

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

Restartování služby:

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

Kontrola stavu služby:

# /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

Problémy s oprávněním při spouštění/zastavování služeb

Pokud nejste přihlášeni jako uživatel root, výše uvedené příkazy vás požádají o zadání hesla uživatele root. Pokud je zadáno špatné heslo, dojde k chybě autentizace a příkaz nebude proveden.

Pokud jste na seznamu sudoers, můžete tyto příkazy spustit jako uživatel sudo. Pokud nejste na seznamu sudoers, zobrazí se chybová zpráva, že nejste na seznamu sudoers a incident bude nahlášen.

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:~$ 

Pokud tedy chcete spravovat jakoukoli službu, ujistěte se, že máte nezbytná oprávnění k provádění těchto příkazů.

Závěr

Naučili jsme se různé způsoby správy služeb na Ubuntu. příkaz systemctl je preferovaný přístup ke spuštění/zastavení/restartování služeb na Ubuntu. Init skripty však vypisují stav příkazu, což může být užitečné ve skriptech shellu k jejich spuštění a okamžitému získání stavu příkazu.


Linux
  1. Spuštění, zastavení a restartování služeb na systémovém serveru RHEL 7 Linux

  2. Jak spustit, zastavit a restartovat služby na dedikovaném serveru Linux

  3. Ručně spusťte, restartujte a zastavte Plex Media Server Ubuntu/Debian

  1. Spuštění, zastavení nebo restartování služeb v CentOS 8 – proces krok za krokem?

  2. Jak spustit/zastavit/restartovat služby ve webovém panelu CentOS

  3. Spusťte, zastavte a restartujte Crond Daemon v Linuxu

  1. Jak spustit, zastavit a restartovat služby v systému Linux

  2. Jak spustit, zastavit a restartovat službu Zimbra

  3. Jak restartovat vzdálený server MySQL běžící na Ubuntu linux?