理解unix/linux shell及unix的进程树,UNIX/linux进程和作业控制

用于创建和使用进程的系统调用有fork、exec、wait和exit。

举例:shell运行外部命令时,先fork调用创建当前进程的一个副本。子进程使用exec将他自身从运行shell的进程变成运行外部程序的进程。其次,父进程使用wait系统调用暂停执行,直到子进程结束执行。最后,外部程序结束,子进程使用exit终止自身的执行。子进程释放所有资源,但保留相关数据条目,成为一种数据结构——僵尸进程。若父进程执行了wait则此时父进程立即被内核唤醒查看相关僵尸进程的执行数据,然后移除僵尸进程条目。若父进程没有执行wait且没有被杀,那么僵尸进程将会保留。

子进程运行时,父进程意外死亡会使子进程称为孤儿进程。孤儿进程被init收养,称为init的子进程。所以处理上面僵尸进程的一种方法是杀死其父进程,使其称为孤儿僵尸进程而被init收养,有init清除他的残留数据。

上面说进程调用fork生成一个副本即子进程。父进程等待,子进程运行程序。fork调用后,父进程返回他的PID,子进程返回为0.这就区分了父进程与子进程。

作业控制

作业控制是一项由shell支持的特性,允许执行多项作业,一个在前台执行,其他在后台运行。(当你在命令的末尾加一个&, 不必等该命令程序执行完毕,而可以立即输入运行其他命令)。

作业与进程的区别是他指整个命令行所需的全部进程。进程由内核控制,而作业由shell控制。如

who | cut -c 1-8 | sort | uniq -c  和   data;who;uptime;cal 12 2008;

第一条命令是一个管道线,生成4个进程,被认为是一个作业。第二个是四个进程。

fg 挂起作业

每个作业处于前台执行、后台执行、待续。使用fg可将改程序返回前台。使用bg将作业移至后台。

suspend命令将shell中的当前程序挂起。

jobs显示作业列表

jobs显示所有作业列表。

ps程序 显示进程信息

-A 显示所有进程(等价于-e)(utility)

-a 显示一个终端的所有进程,除了会话引线

-N 忽略选择。

-d 显示所有进程,但省略所有的会话引线(utility)

-x 显示没有控制终端的进程,同时显示各个命令的具体路径。dx不可合用。(utility)

-p pid 进程使用cpu的时间

-u uid or username 选择有效的用户id或者是用户名

-g gid or groupname 显示组的所有进程。

U username 显示该用户下的所有进程,且显示各个命令的详细路径。如:ps U zhang;(utility)

-f 全部列出,通常和其他选项联用。如:ps -fa or ps -fx and so on.

-l 长格式(有F,wchan,C 等字段)

-j 作业格式

-o 用户自定义格式。

v 以虚拟存储器格式显示

s 以信号格式显示

-m 显示所有的线程

top、prstat监视系统进程

显示重要的动态的进程信息 cpu信息

pstree显示进程树

pstree [-aAcGnpu] [pid  | userid]

kill杀死进程 向进程发送信号

可以用ps显示进程ID 然后用kill ID杀死

kill -STOP 进程      用来想这个进程发送信号STOP

nice改变进程优先级

nice以一个较低的优先级运行程序

renice改变现有进程的优先级

renice niceness -p PID

守护进程

大多数进程不是由用户 运行的程序。这些不与终端相连的后台运行的程序成为守护进程(对应windows的服务程序)。守护进程执行系统所需的大量任务,等待事件的发生。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值