Unix / Linux – 进程管理

本章将详细讨论Unix中的进程管理。

进程是正在运行的程序实例。

操作系统通过一个称为pid/进程ID的五位数跟踪进程,每个进程都有唯一pid。

启动进程

当你启动一个进程(运行一个命令)时,有2种启动方式:

  • 前台进程
  • 后台进程

前台进程

默认情况下每个进程都在前台运行,前台进程有键盘输入和屏幕输出。

ls命令为例:

[kevin@localhost ~]$ ls
book  test1

列出目录下文件,输出显示在屏幕上了,如果ls需要任何输入(它不需要),就会等待键盘输入。

命令行上前台进程同一时间只能运行一个,因为在一个前台进程结束之前不能再输入命令执行。

后台进程

后台进程运行时没有键盘输入,如果需要任何键盘输入它将等待。使用后台进程的好处是可以同时运行其他命令,可以通过在命令末尾添加&启动后台进程。

[kevin@localhost ~]$ ls &
[1] 3539
[kevin@localhost ~]$ book  test1

如上所示,列出目录下文件,以后台进程方式启动。在这里,如果ls命令需要任何输入(它不需要),将进入停止状态,直到被移到前台,接受键盘输入后将继续执行。

[1] 3539中,前面[1]是作业编号,后面3539是进程ID,作业编号可用于进程的前后台切换。

按下回车键:

[1]+  完成                  ls --color=auto

可以看到ls命令成功完成。

列出进程

运行ps (process status)命令可看用户自己的进程,如下所示:

[kevin@localhost ~]$ ps
  PID TTY          TIME CMD
 3490 pts/1    00:00:00 bash
 3563 pts/1    00:00:00 ps

ps常用的标志之一是-f (f代表full)选项,提供更详细的信息,如下所示:

[kevin@localhost ~]$ ps -f
UID        PID  PPID  C STIME TTY          TIME CMD
kevin     3490  3489  0 09:48 pts/1    00:00:00 -bash
kevin     3564  3490  0 10:28 pts/1    00:00:00 ps -f

下面是ps -f命令显示的所有字段描述:

序号 字段
1 UID
进程所属的用户ID(运行它的人)
2 PID
进程 ID
3 PPID
父进程ID(启动它的进程的ID)
4 C
进程的CPU利用率
5 STIME
进程开始时间
6 TTY
与进程关联的终端类型
7 TIME
进程占用的CPU时间
8 CMD
启动此进程的命令

ps命令还有其他一些常用选项:

序号 选项
1 -a
显示现行终端机下的所有进程,包括其他用户的进程
2 -x
通常与 a 这个参数一起使用,可列出较完整信息
3 -u
以用户为主的进程状态
4 -e
所有的进程均显示出来
5 -l
较长、较详细的将该PID 的的信息列出
6 -j
作业的格式 (jobs format)

结束进程

前台进程可以用CTRL + C退出。

后台进程可以通过kill PID命令杀死进程,可以通过ps命令获知PID/进程ID。


[kevin@localhost ~]$ ps PID TTY TIME CMD 3490 pts/1 00:00:00 bash 3634 pts/1 00:00:00 vim 3635 pts/1 00:00:00 ps [kevin@localhost ~]$ kill -9 3634 [kevin@localhost ~]$ ps PID TTY TIME CMD 3490 pts/1 00:00:00 bash 3638 pts/1 00:00:00 ps [1]+ 已杀死 vim test2

在这里,kill -9中的-9是强制杀死进程,如果没有-9选项,有时进程会忽略kill命令。

父进程和子进程

除了初始(init)进程,所有进程都有父进程,用户运行的大多数命令的父进程是shell,可以通过ps -f命令查看进程的父进程ID(PPID)。

僵尸进程和孤儿进程

一个进程已经结束,但进程列表中仍然存在(进程状态标为Z/zombie僵尸),这个进程是无效的,被称为僵尸进程。

一个进程的父进程被杀死,它的父进程变为初始(init)进程,该进程被称为孤儿进程,这与僵尸进程是不一样的。

守护进程

守护进程是系统相关的后台进程,通常具有root权限,为其它进程提供服务。

守护进程类似windows平台上的后台服务,如打印机守护进程。守护进程没有控制终端,无法打开/dev/tty设备文件,如果执行ps -ef查看守护进程的tty字段,可以看到都是问号?

如果你的程序需要长时间运行,就可以让其成为守护进程运行。

top命令

top命令类似windows上的任务管理器,可以查看所有进程的内存、CPU使用情况、平均负载和繁忙进程等信息。

top命令语法

$ top

作业

作业是用户提交给系统的一个任务,一个作业通常包括几个进程,几个进程共同完成一个任务,即作业。

可以使用作业ID(通常比进程ID更短)管理作业,如前后台切换,杀死作业等。



浙ICP备17015664号 浙公网安备 33011002012336号 联系我们 网站地图  
@2019 qikegu.com 版权所有,禁止转载