我刚刚有一个运行 debian 7 的虚拟服务器,每当我启动服务器并调用命令时top
,都会有很多进程在启动时自动启动。
我可以杀死它们吗?或者它们对于虚拟服务器的一般功能至关重要吗?
答案1
一如既往,这取决于...
通常,当我安装 Debian 时,我会从最小安装开始,然后添加我需要和想要运行的内容。任何自动启动的东西都应该正在运行。
您可能已经安装并启用了(远远)超出您需要的内容,但是随机删除东西是减少任何潜在开销的错误方法。
检查安装的内容、系统启动时自动启动的服务并确定您是否需要这些服务。
然后优雅地停止该特定服务(例如,传统上使用/etc/init.d/servicename stop
),如果没有任何问题,则阻止该服务自动启动或完全删除该包。
您看到的很多内容top
可能是您根本无法杀死的内核线程。例如,在这个大部分空闲的系统上:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
25878 <me> 20 0 15036 1172 912 R 0 0.0 0:00.09 top
1 root 20 0 19356 1516 1196 S 0 0.0 0:02.01 init
2 root 20 0 0 0 0 S 0 0.0 0:00.21 kthreadd
3 root RT 0 0 0 0 S 0 0.0 0:01.03 migration/0
4 root 20 0 0 0 0 S 0 0.0 0:00.20 ksoftirqd/0
5 root RT 0 0 0 0 S 0 0.0 0:00.00 migration/0
6 root RT 0 0 0 0 S 0 0.0 0:01.75 watchdog/0
7 root RT 0 0 0 0 S 0 0.0 0:00.36 migration/1
8 root RT 0 0 0 0 S 0 0.0 0:00.00 migration/1
9 root 20 0 0 0 0 S 0 0.0 0:00.36 ksoftirqd/1
10 root RT 0 0 0 0 S 0 0.0 0:01.72 watchdog/1
11 root 20 0 0 0 0 S 0 0.0 0:37.92 events/0
12 root 20 0 0 0 0 S 0 0.0 0:43.73 events/1
您只看到两个真实的应用程序top
,init
其余的都有0
内存占用,表明它们是内核的一部分。
Killinginit
是系统上所有进程的父进程,负责启动所有其他进程,是杀死系统的可靠方法,也是要避免的事情......
答案2
有些可能是。有几个可能不是。
如果你检查ps fxa
,你会发现他们中的很多人都是 的孩子[kthreadd]
,并且名字也在括号中。那些你基本上可以忽略的(它们是 Linux 内核的一部分)。
除此之外,您还必须单独研究每一个。有些(例如,init
)是至关重要的。其他的很重要,具体取决于您如何使用服务器(sshd
、apache2
/httpd
等)。仅当您或您的代码使用该功能时才需要其他功能(例如,atd
)。
杀死他们一般不是对付他们的方法。相反,您需要从一开始就禁用它们(或完全删除它们)。如何执行此操作取决于您的虚拟服务器运行的发行版。