杀死启动时创建的进程安全吗?

杀死启动时创建的进程安全吗?

我刚刚有一个运行 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

您只看到两个真实的应用程序topinit其余的都有0内存占用,表明它们是内核的一部分。

Killinginit是系统上所有进程的父进程,负责启动所有其他进程,是杀死系统的可靠方法,也是要避免的事情......

答案2

有些可能是。有几个可能不是。

如果你检查ps fxa,你会发现他们中的很多人都是 的孩子[kthreadd],并且名字也在括号中。那些你基本上可以忽略的(它们是 Linux 内核的一部分)。

除此之外,您还必须单独研究每一个。有些(例如,init)是至关重要的。其他的很重要,具体取决于您如何使用服务器(sshdapache2/httpd等)。仅当您或您的代码使用该功能时才需要其他功能(例如,atd)。

杀死他们一般不是对付他们的方法。相反,您需要从一开始就禁用它们(或完全删除它们)。如何执行此操作取决于您的虚拟服务器运行的发行版。

相关内容