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


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

サーバーを構築するときは、ボックスから実際に何が必要かを自問する必要があります。 WebサーバーまたはFTPサーバー、NFSサーバーまたはDNSサーバー、データベースサーバーなどが必要ですか。

この記事では、これらの不要なアプリケーションやサービスのいくつかについて説明します。これらは不要な場合がありますが、OSのインストール時にデフォルトでインストールされ、無意識のうちにシステムリソースを消費し始めます。

最初に、次のコマンドを使用して、システムで実行されているサービスの種類を通知します。

[[email protected]]# 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コマンドを使用して接続(ポート)を受け入れるプロセスを簡単に見てみましょう。

[[email protected]]# 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         
....

上記の出力では、サーバー上で不要なアプリケーションがいくつかありますが、それらはまだ次のように実行されていることがわかります。

smbdとnmbdは、Sambaプロセスのデーモンです。あなたは本当にWindowsや他のマシンでsmb共有をエクスポートする必要がありますか?そうでない場合!これらのプロセスが実行されているのはなぜですか?これらのプロセスを安全に強制終了し、次回マシンが起動したときに自動的に開始されないようにすることができます。

インターネットまたはローカルエリアネットワークを介した双方向のインタラクティブなテキスト指向の通信が必要ですか?そうでない場合!このプロセスを強制終了し、起動時からオフにします。

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

リモートプロセス実行(別名rexec)を使用すると、リモートコンピューターでシェルコマンドを実行できます。リモートマシンでシェルコマンドを実行する必要がない場合は、プロセスを強制終了します。

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

ネットワークファイルシステムを起動するために、異なるファイルシステムを自動的にマウントする必要がありますか?そうでない場合!このプロセスが実行されているのはなぜですか?なぜこのアプリケーションにリソースの使用を許可するのですか?プロセスを強制終了し、自動的に開始されないようにします。

ネームサーバー(DNS)を実行する必要がありますか?そうでなければ、いったい何があなたにこのプロセスを実行させ、あなたの資源を使い果たすことを許しているのか。最初に実行中のプロセスを強制終了してから、起動時に実行をオフにします。

lpdは、そのサーバーへの印刷を可能にするプリンタデーモンです。サーバーから印刷する必要がない場合は、システムリソースが使い果たされている可能性があります。

inetdサービスを実行していますか? Mysql、Apacheなどの他のスタンドアロンアプリケーションを使用するsshなどのスタンドアロンアプリケーションを実行している場合は、inetdは必要ありません。プロセスを強制終了し、次回から自動的に無効にすることをお勧めします。

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

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

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

[[email protected]]# ps ax | grep cupsd

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

したがって、「cupsd」プロセスのPIDは「1511」です。そのPIDを強制終了するには、次のコマンドを実行します。

[[email protected]]# kill -9 1511

例を使用してkillコマンドの詳細を確認するには、記事「Linuxでプロセスを終了するためのKillコマンドのガイド」を参照してください。

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

FedoraやCentOSなどのRedHatベースのディストリビューションでは、「chkconfig」と呼ばれるスクリプトを使用して、Linuxで実行中のサービスを有効または無効にします。

たとえば、システムの起動時にApacheWebサーバーを無効にしましょう。

[[email protected]]# chkconfig httpd off
[[email protected]]# chkconfig httpd --del

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

たとえば、システムの起動時にApacheサービスを無効にするには、次のコマンドを実行します。ここで、「-f」オプションは力が必須であることを表します。

[[email protected]]# update-rc.d -f apache2 remove

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

それは今のところすべてです。ここでまた別の興味深い記事を紹介します。それまでは、しばらくお待ちください。Tecmintに接続します。コメントセクションで貴重なフィードバックを提供することを忘れないでください。