进程是正在执行的一个程序或命令,每个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。程序是人使用计算机语言编写的可以实现特定目标或解决特定问题的代码集合。
或者说程序是人使用计算机语言编写的,可以实现一定功能,并且可以执行的代码集合。而进程是正在执行中的程序。当程序被执行时,执行人的权限和属性,以及程序的代码都会被加载入内存,操作系统给这个进程分配一个 ID,称为 PID(进程 ID)。
也就是说,在操作系统中,所有可以执行的程序与命令都会产生进程。只是有些程序和命令非常简单,如 ls 命令、touch 命令等,它们在执行完后就会结束,相应的进程也就会终结,所以我们很难捕捉到这些进程。但是还有一些程和命令,比如 httpd 进程,启动之后就会一直驻留在系统当中,我们把这样的进程称作常驻内存进程。
某些进程会产生一些新的进程,我们把这些进程称作子进程,而把这个进程本身称作父进程。比如,我们必须正常登录到 Shell 环境中才能执行系统命令,而 Linux 的标准 Shell 是 bash。我们在 bash 当中执行了 ls 命令,那么 bash 就是父进程,而 ls 命令是在 bash 进程中产生的进程,所以 ls 进程是 bash 进程的子进程。也就是说,子进程是依赖父进程而产生的,如果父进程不存在,那么子进程也不存在了。
特性 | 描 述 |
---|---|
并发性 | 可以与其它进程一道在宏观上同时向前推进。 |
动态性 | 进程是执行中的程序。此外进程的动态性还体现在如下两个方面:首先,进程是动态产生、动态消亡版的;其次,在进程的生存期内,其状态处于经常性的动态变化之中。 |
独立性 | 进程是调度的基本单位,它可以获得处理机并参与并发执行。 |
交往性 | 进程在运行过程中可能会与其它进程发生直接或间接的相互作用。 |
异步性 | 每个进程都以其相对独立、不可预知的速度向前推进。 |
结构性 | 每个进程有一个控制块PCB。进程和程序的相同点:程序是构成进程的组成部分之一,一个进程存在的权目的就是执行其所对应的程序,如果没有程序,进程就失去了其存在的意义。 |
命令 | 描 述 |
---|---|
ps | 查看正在运行的进程。 |
top | 实时查看进程状态。 |
pstree | 查看进程树。 |
lsof | 列出进程调用或打开的文件信息。 |
kill | 终止进程。 |
killall | 终止一类进程。 |
pkill | 根据 pid 杀死进程。 |
jobs | 当前终端放入后台。 |
fg | 后台名恢复到前台执行。 |
bg | 后台暂停的工作恢复执行。 |
nohup | 将后台命令脱离终端执行。 |
at | 定时执行任务。 |
crontab | 执行定时任务。 |
anacron | 检测长期未执行的定时任务。 |
vmstat | 查看系统资源占用。 |
dmesg | 查看开机信息。 |
free | 查看内存使用情况。 |
w | 查看登录用户。 |
who | 查看登录用户。 |
last | 查看过去登录用户。 |
lastlog | 查看过去登录用户。 |
进程是正在执行的一个程序或命令,每个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。程序是人使用计算机语言编写的可以实现特定目标或解决特定问题的代码集合。