美文网首页
Linux进程管理

Linux进程管理

作者: mcknight | 来源:发表于2020-06-19 11:40 被阅读0次

Linux 是一种动态系统,能够适应不断变化的计算需求。Linux 计算需求的表现是以进程 的通用抽象为中心的。进程可以是短期的(从命令行执行的一个命令),也可以是长期的(一种网络服务)。因此,对进程及其调度进行一般管理就显得极为重要。进程是由进程标识符(PID)表示的。从用户的角度来看,一个 PID 是一个数字值,可惟一标识一个进程。一个 PID 在进程的整个生命期间不会更改,但 PID 可以在进程销毁后被重新使用。创建进程可以采用几种方式。可以执行一个程序(这会导致新进程的创建),也可以在程序内,调用一个 fork 或 exec 系统调用。fork 调用会导致创建一个子进程,而 exec 调用则会用新程序代替当前进程上下文。

查看进程

1、ps 命令
查看某个时间点的进程信息

  • 查看自己的进程
ps -l
  • 查看系统所有进程
ps aux
  • 查看特定的进程
ps aux | grep thread_name

2、pstree
查看进程数

  • 查看所有的进程树
pstree -A

3、top
显示实时进程信息,两秒钟刷新一次

top

4、netstat
查看特定端口的占用进程

netstat -anp | grep port

进程状态

状态 说明
R running or runnable (on run queue) 正在执行或者可执行,此时进程位于执行队列中。
D uninterruptible sleep (usually I/O) 不可中断阻塞,通常为 IO 阻塞。
S interruptible sleep (waiting for an event to complete) 可中断阻塞,此时进程正在等待某个事件完成。
Z zombie (terminated but not reaped by its parent) 僵死,进程已经终止但是尚未被其父进程获取信息。
T stopped (either by a job control signal or because it is being traced) 结束,进程既可以被作业控制信号结束,也可能是正在被追踪。

孤儿进程

一个父进程退出,而它的一个或多个子进程还在运行,那么这些子进程将成为孤儿进程。
孤儿进程将被 init 进程(进程号为 1)所收养,并由 init 进程对它们完成状态收集工作。
由于孤儿进程会被 init 进程收养,所以孤儿进程不会对系统造成危害。

僵尸进程

一个子进程的进程描述符在子进程退出时不会释放,只有当父进程通过 wait() 或 waitpid() 获取了子进程信息后才会释放。如果子进程退出,而父进程并没有调用 wait() 或 waitpid(),那么子进程的进程描述符仍然保存在系统中,这种进程称之为僵尸进程。
僵尸进程通过 ps 命令显示出来的状态为 Z(zombie)。
系统所能使用的进程号是有限的,如果产生大量僵尸进程,将因为没有可用的进程号而导致系统不能产生新的进程。
要消灭系统中大量的僵尸进程,只需要将其父进程杀死,此时僵尸进程就会变成孤儿进程,从而被 init 进程所收养,这样 init 进程就会释放所有的僵尸进程所占有的资源,从而结束僵尸进程。

相关文章

网友评论

      本文标题:Linux进程管理

      本文链接:https://www.haomeiwen.com/subject/snlvxktx.html