进程
现代操作系统通常是多任务的,意味着它们会从一个正在执行的程序切换到另一个正在执行的程序,从而让你产生一次做多件事的错觉。 Linux内核通过使用进程进行管理。 进程是Linux如何组织等待CPU轮换的不同程序的过程。以下将介绍:
ps
- 报告当前进程的快照top
- 动态显示任务jobs
- 列出活动进程kill
- 向进程发送信号killall
- 按名称终止进程shutdown
- 关机
进程如何工作
当系统启动时,内核会启动自己的一些程序,例如进程启动一个名为init
的程序。init
依次运行一系列shell
脚本(位于/etc
)称为init脚本
,它将启动所有系统服务。其中许多服务是作为后台程序执行,这些程序仅位于后台并执行没有任何用户界面的东西。因此,即使我们尚未登录,系统也会处于日常工作状态。一个可以启动其他进程的进程叫做该进程的父进程
。
内核维护有关每个进程的信息,以使事情井井有条。例如,为每个进程分配了一个称为进程ID或PID
的数字。PID
是以升序分配的,init
的PID
始终为1
。内核也保持跟踪分配给每个进程的内存,以及进程准备恢复执行。像文件一样,进程也具有所有者和用户ID,有效的用户ID等。
查看进程
[root@iZerb5rob3dcf6Z ~]# ps
PID TTY TIME CMD
13119 pts/0 00:00:00 bash
25706 pts/0 00:00:00 ps
此示例中的结果列出了两个进程,分别为bash
和ps
,分别为进程13119和进程25706。 TTY
是“Teletype
”的缩写,是指该过程的控制终端。 TIME
字段是进程消耗的CPU时间量。 可见,这两个过程都不会是计算机耗费太多内存。
[root@iZerb5rob3dcf6Z ~]# ps x
PID TTY STAT TIME COMMAND
1 ? Ss 0:03 /usr/lib/systemd/systemd --system --deserialize 15
2 ? S 0:00 [kthreadd]
4 ? S< 0:00 [kworker/0:0H]
5 ? S 0:01 [kworker/u4:0]
......
添加“x
”选项会告诉ps
显示所有终端(如果有)控制进程。存在 “ ?
” 在TTY列表示没有控制终端。使用此选项,我们会看到系统所有进程。
STAT
是“state
”的缩写,查看进程的当前状态: