linux系统基础知识

在Linux系统中,打开文件或者打开进程的流程大致如下:

  1. 应用程序调用系统调用函数来打开文件或者创建进程。例如,打开文件可以使用open()函数,创建进程可以使用fork()函数等。
  2. 操作系统内核接收到系统调用请求,开始处理请求。对于打开文件,内核会查找文件系统来定位文件,并分配一个文件描述符给该文件。对于创建进程,内核会为新进程分配一个进程标识符(pid)和一块内存空间。
  3. 内核会在进程表中创建一个新的进程控制块(PCB),用于跟踪该进程的状态和资源。对于打开文件,内核会在进程的文件描述符表中记录该文件描述符,以便进程可以使用该文件描述符访问该文件。
  4. 对于进程,内核会将进程控制块添加到进程列表中,并在/proc目录下创建一个与该进程对应的目录,以便用户可以查看该进程的状态信息。
  5. 如果需要,内核会为该进程或文件分配内存空间。
  6. 操作系统内核返回结果给应用程序,应用程序可以使用返回的文件描述符或进程标识符来访问文件或者控制进程的行为。

Kill -9实现原理:

 

kill -9命令是用来终止进程的,它会向指定的进程发送一个SIGKILL信号,强制终止该进程。这个信号是由操作系统内核发送的,不会直接影响/proc目录下的pid文件。

/proc目录是一个特殊的文件系统,它提供了一种机制,让用户可以查看系统内核和进程的信息。每个进程都有一个对应的目录,其中包含了该进程的状态、内存映像、文件描述符、命令行参数等信息。如果使用kill -9命令终止了进程,/proc目录下的对应目录会随之被删除,但这并不是kill -9命令的直接结果。实际上,进程被终止之后,内核会将其从进程列表中删除,并释放该进程占用的资源,包括内存、文件描述符等。/proc目录下的pid文件只是一种用于方便用户查看进程状态的机制,它并不是进程的实体,因此被终止的进程的pid文件会被删除,但这并不是kill -9命令的直接结果。

关于文件或者进程产生的/proc/目录信息

在Linux系统中,进程或者文件的正常关闭和异常关闭,/proc目录下的pid文件目录消失的流程是不同的。

对于进程的正常关闭,当进程结束时,内核会将该进程从进程表中删除,并释放该进程占用的资源。同时,/proc目录中对应的pid目录也会被删除。

对于文件的正常关闭,当进程关闭文件描述符时,内核会释放该文件描述符,并释放该文件占用的资源。此时,/proc目录中对应的文件信息也会被删除。

对于进程或文件的异常关闭,如进程被kill -9命令强制终止或者文件被强制关闭等情况,/proc目录下的pid或者文件信息可能会不正常地残留。在这种情况下,/proc目录中对应的pid或者文件信息可能会不准确或者不完整。因此,在使用/proc目录查看进程或者文件信息时,需要注意这些信息的准确性和完整性。

 

 

当进程或者文件异常关闭时,/proc目录下的pid或者文件信息可能会不正常地残留。在这种情况下,这些信息不会自动关闭或者删除,因为内核并不知道这些信息已经不再有效。

如果需要清理这些残留信息,可以使用一些工具或者手动删除。例如,可以使用ps命令、top命令或者其他进程监控工具来查看当前运行的进程,并找到不再需要的进程对应的pid,然后使用kill命令杀死该进程。一旦进程被kill掉,/proc目录中对应的pid目录也会被删除。对于不需要的文件信息,可以手动删除/proc目录中对应的文件信息。

需要注意的是,在删除/proc目录下的pid或者文件信息时,要确保删除的是正确的信息,以避免对系统产生不良影响。同时,一些进程或者文件信息可能是由系统服务或者其他程序所依赖的,删除这些信息可能会导致系统服务或者程序出现异常。因此,在进行这些操作时,需要谨慎处理。

你可能感兴趣的:(linux,服务器,运维)