GNU/Linux >> Linux の 問題 >  >> Linux

Ubuntu –サービスの開始、停止、再起動

アプリケーションがバックグラウンドで実行される場合、それはサービスと呼ばれます。これらは、システムまたは当社のソフトウェアアプリケーションを実行するために不可欠です。ほとんどのサーバーにある一般的なサービスには、Apache、MySQL、NGINXなどがあります。システムが起動すると、これらのサービスは自動的に起動するように構成されます。

私は自分のウェブサイトをホストするためにUbuntuを使用しています。また、MySQLを使用してすべてのWebサイトデータを保存しています。時々、私は定期的な更新を実行し、これらのサービスを再起動することが不可欠です。このチュートリアルでは、Ubuntuでサービスを開始、停止、再起動するさまざまな方法を学習します。

Ubuntuでサービスを開始、停止、再起動するさまざまな方法

  1. systemctlコマンド
  2. サービスコマンド
  3. initスクリプト

systemctlを使用したUbuntuサービスの開始、停止、再起動

これは、Ubuntuサービスを管理するための推奨される方法です。サービス名がわからない場合は、systemctl --allを実行できます。 すべてのサービスを一覧表示するコマンド。ただし、何百ものサービスが実行されている可能性があるため、grepを使用してリストをフィルタリングすることをお勧めします コマンド。

MySQLとApacheHTTPサーバーのサービス名を調べてみましょう。

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

したがって、MySQLサービス名は「mysql.service」であり、ApacheHTTPサーバーサービス名は「apache2.service」です。

systemctlコマンドを使用してこれらのサービスを管理する方法を学びましょう。

1。 systemctlを使用してサービスを停止する

# systemctl stop mysql.service 
#

実行が成功した場合、コマンドは何も出力しません。

2。 systemctlを使用したサービスステータスの確認

以下のコマンドでサービス状況を確認できます。

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

サービスを停止したとき、「アクティブ」値は非アクティブ(デッド)であったことに注意してください。サービスを開始すると、アクティブ(実行中)に変更されます。

4。 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

ヒント :systemctlコマンドで完全なサービス名を使用する必要はありません。たとえば、「systemctl restart mysql」を実行すると、自動的に「.service」が追加され、「systemctlrestartmysql.service」コマンドが実行されます。

serviceコマンドを使用してUbuntuサービスを管理する

service --status-allを使用してすべてのサービスを一覧表示できます 指図。必要に応じて、grepコマンドを使用して、探しているサービスを除外します。

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

serviceコマンドでは、最初にサービス名を指定してから、実行するコマンドを指定する必要があります。

サービスを停止する:

# service mysql stop

サービスを開始する:

# service mysql start

サービスを再開します:

# service mysql restart

サービスステータスの確認:

# 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

サービスを管理するためのUbuntuinitスクリプト

サービスの初期化スクリプトは、/etc/init.d/にあります。 ディレクトリ。これらのスクリプトを使用して、サービスを管理できます。ただし、これ以上使用することはお勧めしません。systemctlコマンドを使用することをお勧めします。

サービスを停止する:

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

サービスを開始する:

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

サービスを再開します:

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

サービスステータスの確認:

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

サービスの開始/停止時の権限の問題

rootユーザーとしてログインしていない場合、上記のコマンドは実行するrootユーザーのパスワードを入力するように要求します。間違ったパスワードを入力すると、認証失敗エラーがスローされ、コマンドは実行されません。

sudoersリストに含まれている場合は、これらのコマンドをsudoユーザーとして実行できます。 sudoersリストに含まれていない場合は、sudoersリストに含まれていないというエラーメッセージが表示され、インシデントが報告されます。

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

したがって、サービスを管理する場合は、これらのコマンドを実行するために必要な権限があることを確認してください。

結論

Ubuntuでサービスを管理するさまざまな方法を学びました。 systemctlコマンド Ubuntuでサービスを開始/停止/再起動するための推奨されるアプローチです。ただし、initスクリプトはコマンドのステータスを出力します。これは、シェルスクリプトでコマンドを実行し、コマンドのステータスをすぐに取得するのに役立ちます。


Linux
  1. systemd RHEL 7 Linuxサーバーでサービスを開始、停止、再起動します

  2. Linux専用サーバーでサービスを開始、停止、再起動する方法

  3. Plex Media Server Ubuntu / Debianを手動で起動、再起動、停止します

  1. CentOS 8でサービスを開始、停止、または再起動します-ステップバイステップのプロセス?

  2. CentOSWebパネルでサービスを開始/停止/再開する方法

  3. Linux で crond デーモンを開始、停止、再起動する

  1. Linuxでサービスを開始、停止、および再起動する方法

  2. Zimbra サービスを開始、停止、再起動する方法

  3. Ubuntu Linux で実行されているリモート MySQL サーバーを再起動する方法は?