Linux 进程状态
在本文中,我们将学习Linux进程的状态。我们将学习Linux进程在其生命周期的不同阶段可能处于的五种状态。Linux进程有五种状态:
- 正在运行和可运行
-
已停止
-
不可中断的睡眠
-
僵尸
-
可中断的睡眠
上述每个进程状态都有明确的原因存在。深入了解这些状态对于调试资源耗尽或失控的进程产生等问题非常有帮助。如果需要了解如何终止或杀死进程,这种理解更加重要,因为根据进程的状态可能需要使用不同的技术。
正在运行和可运行
当一个新的进程被启动时,它进入正在运行或可运行的状态。在运行时,进程使用一个CPU核心来执行其逻辑和代码。然而,线程调度方法可能会强制运行中的进程放弃执行权。这将确保每个进程都能平等地访问CPU资源。由于进程现在处于可运行的状态并等待执行,因此在这种情况下,它将被处理并添加到运行队列中。
运行中的进程准备好执行,而可运行的进程排队等候执行,但由于某种原因,CPU尚未准备好调度它们。因此,它将被安排进行操作。由于虚拟机环境中的实际CPU配备过多,因此虚拟CPU可能具有稍微更高的延迟或CPU准备就绪。
可中断的睡眠
正在运行的进程在某个时候会到达等待数据的阶段。比如请求用户输入时,终端的输入可能是一种实现方式。其他时候,进程可能是一个闲置的Web服务器,等待请求的到来。
一个良好编码的程序在等待时进入可中断的睡眠状态。这种情况使得结束一个进程变得简单和无麻烦。在等待输入时,进程可能进入这个状态,让其他进程使用CPU。无谓地循环使用CPU时间将是一种资源浪费。新创建的目录或文件可以以点(.)作为前缀,并隐藏在常规的文件和目录列表中。
不可中断的睡眠
当进程处于不可中断的睡眠状态时,它处于等待状态,就像可中断的睡眠一样。在这种情况下,中断通常会带来很大的问题。虽然这种情况不常见,当发现进程处于这种状态时,通常是因为系统调用(syscall)的原因。mkdir是一个很好的例子。在进行与内核的系统调用时,进程进入此状态。除非出现极端情况,这会立即发生在本地磁盘上。如果具备正确的条件,这可能在网络文件系统如NFS上无限期地停滞。
不可中断的睡眠状态不会响应任何信号,它只会等待资源可用后转换为可运行状态。然而,可中断的睡眠状态会响应信号和资源的可用性。
停止
您可以将STOPPED进程视为已暂停的进程。您可以使用控制台工具和应用程序中的Control + Z来暂停进程。在这种情况下,进程会停止运行并变得无响应。当前台程序请求用户输入,但您还没有准备好提供输入时,进程可能处于这种状态。您可以使用Control+Z来暂停进程,然后继续其他工作。当您准备好继续操作时,使用”fg”命令将进程恢复。
僵尸
处于僵尸状态的进程可能看起来处于一个不寻常的状态。简单来说,这是一个进程在终止之后但其父进程还未将其从进程表中移除的状态。进程结束后,由父进程负责“收割”子进程并清理进程表。
在大多数情况下,僵尸进程只在父进程尚未完成清理工作且仍存在运行的进程时出现。这个术语“僵尸”可能是一个类比,因为僵尸是不死之人,因此无法被杀死。考虑一种可能在这种情况下起作用的方法。它已经结束了,但它还没有真正消失。
结论
在本教程中,我们学习了如何在Linux中递归复制时跳过隐藏文件和目录的一些示例。本文还讨论了如何在递归复制目录时省略隐藏文件和目录。
复制所有内容然后删除隐藏项目的方法很简单。但这可能会导致安全漏洞和性能问题。任何Linux用户都可以迅速解决这个问题。请随时尝试Linux提供的任何方法来解决此问题,以消除此错误。上述过程适用于各种Linux发行版。所有操作系统都必须具备文件描述符作为基本元素。