进程是如何工作的:
当系统启动的时候,内核先把一些自己的程序初始化为进程,然后运行一个叫做init的程序。init再依次运行一系列的称为init脚本的shell脚本(位于/etc),它们可以启动所有的系统服务。其中许多系统服务以守护(daemon)程序的形式实现,守护程序仅在后台运行,没有任何用户接口。这样,即使我们没有登录系统,至少系统也在忙于执行一些例行事务。
内核维护每个进程的信息,以此来保持事情有序。例如,系统分配给每个进程一个数字,这个数字叫做进程 ID 或 PID。PID 号按升序分配,init 进程的 PID 总是1。内核也对分配给每个进程的内存进行跟踪。像文件一样,进程也有所有者和用户 ID,有效用户 ID,等等。
查看进程-ps
可以看出,默认情况下,ps不会显示很多进程信息,只是列出与当前终端会话相关的进程。TTY是Teleype的简称,是指进程的控制终端。TIME字段表示进程所消耗的CPU时间数量。
(1) 加上“x”选项,告诉ps命令,展开所有进程,不管它们由什么终端控制。TTY为?,表示没有控制终端,STAT显示了进程当前状态,进程的状态包括:
(2) 另一个选项组合时aux,将会提供给我们更多信息。
命令列标题的含义如下:
动态查看进程-top
top程序使用来查看系统中“顶端”进程的。top显示结果由两部分组成:最上面是系统概要,下面是进程列表。
控制进程
输入gedit命令时,将会弹出记事本程序,但注意shell提示符并没有返回。这是因为shell正在等待这个程序结束,如果关闭getdit窗口,shell提示符就返回了。
中断一个进程
在一个终端,输入Ctrl+c,将中断一个程序,许多命令行程序可以被中断。
将一个进程放置到后台
启动一个程序,让它立即在后台运行,我们可以在程序命令之后,加上“&”字符:
jobs命令可以查看当前正在运行的任务。
停止一个进程
输入Ctrl-z,可以停止一个前台进程,但并没有终止。使用fg命令,可以恢复程序到前台,或者用bg命令把程序移到后台。
kill命令可以“杀死”进程,单并不是确切地“杀死”程序,而是给程序发送信号。使用Ctrl-c时,会发送一个INT(中断)的信号;当使用Ctrl-z时,则发送一个叫做TSTP(终端停止)的信号。
kill的语法一般为:kill [-signal] PID...
示例:
注意,既可以使用号码,也可以用名字,不过要在名字前加字母“SIG”,来指定所要发送的信号。
其他常用信号:
Linux学习笔记(十四)进程
最新推荐文章于 2022-02-26 21:44:29 发布