如何停止和禁用 Linux 系统中不需要的服务
我们根据计划和要求构建服务器,但构建服务器时应具备哪些功能才能使其快速高效地运行。我们都知道,在安装 Linux 操作系统时,一些不需要的软件包和应用程序会在用户不知情的情况下自动安装。
在构建服务器时,我们需要问自己我们实际上需要什么。我需要Web 服务器还是FTP 服务器、NFS 服务器还是DNS 服务器、数据库服务器还是其他什么。
在本文中,我们将讨论一些您可能不需要的不需要的应用程序和服务,但它们在操作系统安装期间默认安装,并在不知不觉中开始消耗您的系统资源。
让我们首先使用以下命令了解系统上正在运行什么类型的服务。
[avishek@example]# 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@example]# 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. Telnet
您是否需要通过互联网或局域网进行双向交互式文本通信?如果不需要!请终止此进程并将其从启动时关闭。
3. 远程登录
您是否需要通过网络登录到另一台主机。如果不需要!请终止此进程并禁止其在启动时自动启动。
4. rexec
远程进程执行(又名 rexec)允许您在远程计算机上执行 shell 命令。如果您不需要在远程计算机上执行 shell 命令,只需终止该进程即可。
5. FTP
您是否需要通过互联网将文件从一个主机传输到另一个主机?如果不需要,您可以安全地停止该服务。
6. 自动挂载
您是否需要自动挂载不同的文件系统来启动网络文件系统?如果不需要!为什么这个进程在运行?为什么让这个应用程序使用您的资源?终止该进程并禁止其自动启动。
7. 命名
您需要运行名称服务器 (DNS) 吗?如果不需要,那么究竟是什么迫使您运行此进程并允许消耗您的资源。请先终止正在运行的进程,然后关闭它在启动时运行的功能。
8. lpd
lpd 是打印机守护程序,它使打印到该服务器成为可能。如果您不需要从服务器打印,您的系统资源可能会被耗尽。
9. Inetd
您是否正在运行任何 inetd 服务?如果您正在运行独立应用程序(如 ssh),而该应用程序使用其他独立应用程序(如 Mysql、Apache 等),则您不需要 inetd。最好终止该进程并禁用它下次自动启动。
10. 端口映射
Portmap 是一种开放网络计算远程过程调用 (ONC RPC),使用守护进程 rpc.portmap 和 rpcbind。如果这些进程正在运行,则意味着您正在运行 NFS 服务器。如果 NFS 服务器在无人注意的情况下运行,则意味着您的系统资源正在被不必要地消耗。
如何在 Linux 中终止进程
为了在 Linux 中终止正在运行的进程,请使用“ Kill PID ”命令。但是,在运行 Kill 命令之前,我们必须知道该进程的PID。例如,这里我想找到“ cupsd ”进程的 PID。
[avishek@example]# ps ax | grep cupsd 1511 ? Ss 0:00 cupsd -C /etc/cups/cupsd.conf
因此,“ cupsd ”进程的 PID为“ 1511 ”。要终止该 PID,请运行以下命令。
[avishek@example]# kill -9 1511
要了解有关 kill 命令及其示例的更多信息,请阅读文章《在 Linux 中终止进程的 Kill 命令指南》
如何在 Linux 中禁用服务
在基于Red Hat 的发行版(例如Fedora和CentOS)中,使用名为“ chkconfig ”的脚本来启用和禁用 Linux 中正在运行的服务。
例如,让我们在系统启动时禁用 Apache Web 服务器。
[avishek@example]# chkconfig httpd off [avishek@example]# chkconfig httpd --del
在基于Debian的发行版(例如Ubuntu、Linux Mint和其他基于 Debian 的发行版)中,使用名为update-rc.d的脚本。
例如,要在系统启动时禁用 Apache 服务,请执行以下命令。此处的“ -f”选项代表强制。
[avishek@example]# update-rc.d -f apache2 remove
经过这些更改后,系统下次启动时将不需要这些不必要的进程,这实际上将节省我们的系统资源,并且服务器将更加实用、快速、安全。
现在就这些了。我会再来这里分享另一篇有趣的文章。在此之前,请继续关注并关注示例。不要忘记在评论部分向我们提供您宝贵的反馈。