现代操作系统通常都支持多重任务处理,多重任务处理是指系统通过快速切换运行中的程序来实现多任务的同时执行,Linux内核通过使用进程来管理多重任务,进程是Linux用来安排不同程序等待CPU调度的一种组织方式
进程如何工作:系统启动时,内核先把它的一些程序初始化为进程,然后运行一个称为init的程序,init程序将依次运行一系列称为脚本初始化的shell脚本(放在/etc目录下),这些脚本将会启动所有的系统服务,其中的很多服务都是通过守护程序来实现的,而后台程序只是呆在后台做它们自己的事情,并且没有用户界面,因此,即使没有用户登录,系统也在忙于执行一些例行程序
一个程序的运行可以触发其他程序的运行,在进程系统中这种情况被表述为父进程创建子进程
内核会保存每个进程的信息以便确保任务有序进行,比如,每个进程将被分配一个称为进程ID(PID,process ID)的号码。进程ID是按递增的顺序来分配的,init进程的PID始终为1.内核也记录分配给每个进程的内存信息以及用来恢复运行的进程就绪信息。和文件系统类似,进程系统中也存在所有者、用户ID、有效用户ID等
ps命令:查看进程信息(默认情况下,ps命令输出的信息并不是很多,只是输出和当前终端会话相关的进程信息)
1)TTY是teletype(电传打字机)的缩写,代表了进程的控制终端
2)UNIX在这里也显示了进程的运行时间,TIME字段表示了进程消耗的CPU时间总和
添加x选项(注意这里没有前置的连字符)将告知ps命令显示所有的进程,而不需要关注它们是由哪个终端(如果有其他的情况)所控制的。TTY列中出现的“?”表示没有控制终端
这些进程状态的后面可以带其他的字符来表示不同的特殊进程特性
ps aux:将会显示属于每个用户的进程信息,使用这些选项时不带前置连字符将使得命令以“BSD模式(BSD-style)”运行。ps命令的Linux版本可以模拟多种UNIX版本中ps程序的运行方式:
虽然ps命令可以显示有关机器运行情况的很多信息,但是它提供的只是在ps命令被执行时刻机器状态的一个快照。要查看机器运行情况的动态视图,可以使用top命令
top程序将按照进程活动的顺序,以列表的形式持续更新显示系统进程的当前信息(默认每3秒更新一次),它主要用于查看系统“最高(top)”进程的运行情况,top命令显示的内容包含两个部分,顶部显示的是系统总体状态信息,下面显示的是一张按CPU活动时间排序的进程情况表
top程序可以接受许多键盘指令,其中最常用的有两个:一个是h,输入后将显示程序的帮助界面;另一个是q,用来退出top命令
主流的桌面环境都提供了用来显示类似top命令的输出信息的图形化应用程序,但是top命令优于图形化版本,这是因为top命令运行的更快,而且消耗的系统资源要少得多,毕竟,系统监控程序不应该减缓正在被监控的系统的处理速度
控制进程:
1)中断进程:在终端里按下Ctrl-C键将会中断一个程序,它意味着我们委婉的请求程序结束,许多(但不是所有)命令行程序都可以使用这种方法来实现中断
2)使进程在后台运行:
3)使进程回到前台运行:
4)停止(暂停)进程:
信号:
kill命令通常用来“杀死”(终止)进程,它可以用来终止运行不正常的程序或者反过来拒绝终止的程序