Linux操作系统的安装时,会有一些不需要的软件包和应用程序会在用户不知情的情况下自动安装。不需要的应用程序或者服务器在操作系统期间被默认安装,会消耗系统资源。使用服务器我们会依照计划和需求来构建服务器,为实现更高效的系统运行建议卸载或者禁用无用的程序或服务。
先用以下命令了解系统上正在运行哪些类型的服务:
[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@howtoing]# 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 的守护进程。若无需在其他设备上访问Samba共享,这些进程可能不必要。你可以安全地停止它们,并阻止其在系统启动时自动运行。Telnet是用于互联网或局域网进行双向交互式文本通信。如果不需要可以把这项进程从启动时关闭。
关于远程登录,如果不需要通过网络登录到另外一台主机,可以终止并禁用在启动时自启动。
Rexec是远程进程执行,可以运行用户咋远程服务器上执行shell命令。如果不需要此项功能可以终止该进程。
FTP属于互联网文件传输协议,如果没有使用用互联网从一个主机传输到另外一个主机可以停止该服务。
关于自动挂载,如果不需要自动挂载不同文件来自启动网络文件系统,可以禁用该系统自启动,避免占用过多系统资源。
是否需要运行名称服务器,如果不需要可以禁用这个进程,可以减少消耗资源,关闭其启动时运行功能。
Lpd是打印机守护进程,使用打印服务器功能才会使用到此项,如果不需要可以禁用不让系统资源被其消耗。
如果您正在运行独立应用程序(如 ssh),而该应用程序使用其他独立应用程序(如 Mysql、Apache 等),则您不需要 inetd。最好终止该进程并禁用它下次自动启动。
Portmap 是一种开放网络计算远程过程调用 (ONC RPC),使用守护进程 rpc.portmap 和 rpcbind。如果这些进程正在运行,则意味着您正在运行 NFS 服务器。如果 NFS 服务器在无人注意的情况下运行,则意味着您的系统资源正在被不必要地消耗。
为了在 Linux 中终止正在运行的进程,请使用“ Kill PID ”命令。但是,在运行 Kill 命令之前,我们必须知道该进程的PID。例如,想找到“ cupsd ”进程的 PID。
[avishek@howtoing]# ps ax | grep cupsd
1511 ? SS 0:00 cupsd -C /etc/cups/cupsd.conf
“ cupsd ”进程的 PID为“ 1511 ”。要终止该 PID,请运行以下命令。
[avishek@howtoing]#kill -9 1511
在基于Red Hat的发行版(例如Fedora和CentOS)中,使用名为“ chkconfig ”的脚本来启用和禁用 Linux 中正在运行的服务。
例如,让我们在系统启动时禁用 Apache Web 服务器。
[avishek@howtoing]# chkconfig httpd 关闭
[avishek@howtoing]# chkconfig httpd --del
在基于Debian的发行版(例如Ubuntu、Linux Mint和其他基于 Debian 的发行版)中,使用名为update-rc.d 的脚本。
例如,要在系统启动时禁用 Apache 服务,请执行以下命令。此处的“ -f”选项代表强制。
[avishek@tecmint]#update-rc.d -f apache2 删除
经过这些更改后,系统下次启动时将不需要这些不必要的进程,这实际上将节省我们的系统资源,并且服务器将更加实用、快速、安全。