ウェブサイト検索

Linuxシステムから不要なサービスを停止および無効にする方法


私たちは計画と要件に従ってサーバーを構築しますが、サーバーを迅速かつ効率的に機能させるために、どのような機能が意図されているのでしょうか。Linux OSをインストールする際に、ユーザーの知らないうちに不要なパッケージやアプリケーションが自動的にインストールされることは誰もが知っています。

サーバーを構築する際には、私たちが実際にそのボックスから何を必要としているのか自問自答する必要があります。Webサーバーが必要なのか、FTPサーバーが必要なのか、NFSサーバーが必要なのか、DNSサーバーが必要なのか、データベースサーバーが必要なのか、それとも別の何かが必要なのか。

この記事では、必要ないかもしれないが、OSのインストール時にデフォルトでインストールされ、知らず知らずのうちにシステムリソースを消費し始めるいくつかの不要なアプリケーションやサービスについて議論します。

まず、次のコマンドを使用してシステムで実行されているサービスの種類を確認しましょう。

[avishek@tecmint]# ps ax
サンプル出力
  PID TTY      STAT   TIME COMMAND
    2 ?        S      0:00 [kthreadd]
    3 ?        S      0:00  \_ [migration/0]
    4 ?        S      0:09  \_ [ksoftirqd/0]
    5 ?        S      0:00  \_ [migration/0]
    6 ?        S      0:24  \_ [watchdog/0]
    7 ?        S      2:20  \_ [events/0]
    8 ?        S      0:00  \_ [cgroup]
    9 ?        S      0:00  \_ [khelper]
   10 ?        S      0:00  \_ [netns]
   11 ?        S      0:00  \_ [async/mgr]
   12 ?        S      0:00  \_ [pm]
   13 ?        S      0:16  \_ [sync_supers]
   14 ?        S      0:15  \_ [bdi-default]
   15 ?        S      0:00  \_ [kintegrityd/0]
   16 ?        S      0:49  \_ [kblockd/0]
   17 ?        S      0:00  \_ [kacpid]
   18 ?        S      0:00  \_ [kacpi_notify]
   19 ?        S      0:00  \_ [kacpi_hotplug]
   20 ?        S      0:00  \_ [ata_aux]
   21 ?        S     58:46  \_ [ata_sff/0]
   22 ?        S      0:00  \_ [ksuspend_usbd]
   23 ?        S      0:00  \_ [khubd]
   24 ?        S      0:00  \_ [kseriod]
   .....

さて、以下に示すように、netstatコマンドを使用して接続を受け入れているプロセス(ポート)をざっと見てみましょう。

[avishek@tecmint]# netstat -lp
サンプル出力
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 *:31138                     *:*                         LISTEN      1485/rpc.statd      
tcp        0      0 *:mysql                     *:*                         LISTEN      1882/mysqld         
tcp        0      0 *:sunrpc                    *:*                         LISTEN      1276/rpcbind        
tcp        0      0 *:ndmp                      *:*                         LISTEN      2375/perl           
tcp        0      0 *:webcache                  *:*                         LISTEN      2312/monitorix-http 
tcp        0      0 *:ftp                       *:*                         LISTEN      2174/vsftpd         
tcp        0      0 *:ssh                       *:*                         LISTEN      1623/sshd           
tcp        0      0 localhost:ipp               *:*                         LISTEN      1511/cupsd          
tcp        0      0 localhost:smtp              *:*                         LISTEN      2189/sendmail       
tcp        0      0 *:cbt                       *:*                         LISTEN      2243/java           
tcp        0      0 *:websm                     *:*                         LISTEN      2243/java           
tcp        0      0 *:nrpe                      *:*                         LISTEN      1631/xinetd         
tcp        0      0 *:xmltec-xmlmail            *:*                         LISTEN      2243/java           
tcp        0      0 *:xmpp-client               *:*                         LISTEN      2243/java           
tcp        0      0 *:hpvirtgrp                 *:*                         LISTEN      2243/java           
tcp        0      0 *:5229                      *:*                         LISTEN      2243/java           
tcp        0      0 *:sunrpc                    *:*                         LISTEN      1276/rpcbind        
tcp        0      0 *:http                      *:*                         LISTEN      6439/httpd          
tcp        0      0 *:oracleas-https            *:*                         LISTEN      2243/java         
....

上記の出力では、サーバーに必要でないアプリケーションがいくつか実行されていることに気付くでしょう。

1. smbd と nmbd

smbd および nmbd は Samba プロセスのデーモンです。Windows や他のマシンで smb シェアをエクスポートする必要がありますか?もしそうでないのなら、これらのプロセスが実行されている理由は何ですか?これらのプロセスを安全に終了させ、次回のマシン起動時に自動的に起動しないように無効にすることができます。

2. テルネット

インターネットまたはローカルエリアネットワーク上で双方向のインタラクティブなテキスト志向の通信が必要ですか?必要ない場合は、このプロセスを終了し、起動時に自動的に開始しないように設定してください。

3. rlogin

別のホストにネットワーク経由でログインする必要がありますか?必要がない場合は、このプロセスを終了し、起動時に自動的に開始しないようにしてください。

4. rexec

リモートプロセス実行(rexec)は、リモートコンピュータ上でシェルコマンドを実行することを可能にします。リモートマシンでシェルコマンドを実行する必要がない場合は、プロセスを単に終了させてください。

5. FTP

インターネット経由で一つのホストから別のホストにファイルを転送する必要がありますか?必要がない場合は、サービスを安全に停止できます。

6. 自動マウント

ネットワークファイルシステムを立ち上げるために、異なるファイルシステムを自動的にマウントする必要がありますか?そうでないなら、なぜこのプロセスが実行されているのですか?なぜこのアプリケーションにあなたのリソースを使用させているのですか?プロセスを終了させ、自動起動を無効にしてください。

7. 名称付き

ネームサーバー(DNS)を実行する必要がありますか?もしそうでないなら、なぜこのプロセスを実行してリソースを消費させる理由があるのでしょうか。まず、実行中のプロセスを終了させてから、ブート時に実行しないように設定してください。

8. lpd

lpdは、そのサーバーに印刷することを可能にするプリンタデーモンです。サーバーから印刷する必要がなければ、システムリソースが消費されている可能性があります。

9. Inetd

inetdサービスを実行していますか?もし、MysqlやApacheなどの他のスタンドアロンアプリケーションを使用するsshのようなスタンドアロンアプリケーションを実行している場合、inetdは必要ありません。プロセスを終了して、次回自動的に起動しないように設定する方が良いでしょう。

10. ポートマップ

ポートマップは、オープンネットワークコンピューティングリモートプロシージャコール(ONC RPC)およびデーモンrpc.portmapとrpcbindです。これらのプロセスが実行されている場合、NFSサーバーが実行されていることを意味します。NFSサーバーが気づかれずに実行されている場合、あなたのシステムリソースが不必要に使用されていることを意味します。

Linuxでプロセスを終了する方法

Linuxで実行中のプロセスを終了させるには、'Kill PID'コマンドを使用します。しかし、Killコマンドを実行する前に、プロセスのPIDを知っておく必要があります。例えば、ここでは'cupsd'プロセスのPIDを見つけたいと思います。

[avishek@tecmint]# ps ax | grep cupsd

1511 ?        Ss     0:00 cupsd -C /etc/cups/cupsd.conf

つまり、‘cupsd’プロセスのPIDは‘1511’です。そのPIDを終了させるには、次のコマンドを実行してください。

[avishek@tecmint]# kill -9 1511

killコマンドについての例を含む詳細を知るには、Linuxでプロセスを終了するためのkillコマンドに関するガイド記事をお読みください。

Linuxでサービスを無効にする方法

FedoraやCentOSのようなRed Hatベースのディストリビューションでは、Linuxで実行中のサービスを有効化および無効化するために、‘chkconfig‘というスクリプトを使用します。

例えば、システムの起動時にApacheウェブサーバーを無効にしましょう。

[avishek@tecmint]# chkconfig httpd off
[avishek@tecmint]# chkconfig httpd --del

UbuntuやLinux MintなどのDebianベースのディストリビューションでは、update-rc.dと呼ばれるスクリプトを使用します。

例えば、システム起動時にApacheサービスを無効にするには、次のコマンドを実行します。ここで「-f」オプションは強制を意味し、必須です。

[avishek@tecmint]# update-rc.d -f apache2 remove

これらの変更を行った後、システムは次回起動時にこれらの不要なプロセスなしで起動し、実際にシステムリソースを節約することができ、サーバーはより実用的で、速く、安全かつセキュアになります。

それでは今回はこれでおしまいです。また興味深い記事でお会いしましょう。それまで、Tecmintに関心を持ち続けてください。コメント欄で皆さんの貴重なフィードバックを忘れずにお寄せください。

関連記事: