UNIX进程管理

进程概述:

什么是进程?
进程是一个程序针对一组数据的一次执行
进程是整个系统中资源分配的最小单位
进程是系统调用,系统处理机调度最小的单位
每个程序(命令)的运行都会产生一个进程

一个进程环境包括下面几个部分:
程序或脚本
相关的数据
打开的文件
当前目录
用户号(UID)和组号(GID)
进程号(PID)
父进程号(PPID)
程序变量

查看进程:
$$变量显示当前Shell的PID
在这里插入图片描述
ps命令查看用户启动的进程
在这里插入图片描述
查看系统所有进程
ps -ef
在这里插入图片描述
父进程和子进程:
输出当前进程号,创建子shell,输出子shell的进程号,输出命令,退出回到父进程
在这里插入图片描述

进程与变量:
变量是进程环境的一部分
不同进程间变量是不能互相访问和修改的
子进程要想继续父进程的变量,必须用export命令将变量输出成全局变量

示例:
子ksh不能读取和修改父进程的变量
在这里插入图片描述
父进程将x变量输出成全局变量,所以子进程ksh可以读取该变量,但是修改变量对父shell无效
在这里插入图片描述

Shell脚本概述:

什么是Shell脚本:
简单的文本文件,包含多条AIX的命令
可以用vi编辑或者任意一个AIX的编辑器编辑
当shell脚本被执行时,shell每次读取文件的一行,按顺序执行脚本中的命令
用交互、流程控制和函数调用等方法将多个AIX命令编写在一起构成Shell脚本,可以完成复杂的系统管理的操作。

运行Shell脚本:
编辑Shell脚本:
通常用vi编辑Shell脚本
在这里插入图片描述

调用Shell脚本:
在子shell中运行:
在这里插入图片描述
添加可执行权限再执行:
在这里插入图片描述
在当前Shell中运行:
在这里插入图片描述
在子shell中调用set_dir,会发现dir1和dir2没改变,因为只是在子shell中赋值了,当前shell中dir1和dir2中并没赋值。

命令或脚本的返回码:
每个命令执行完之后,父进程得到一个返回码,返回命令执行的状态:
0 执行成功
1-255 执行失败

$?是预定义的Shell环境变量,储存上一条命令或脚本的返回码

exit命令用于退出脚本或当前Shell并设置返回值
exit n
n是一个从 0 到 255 的整数
0表示成功退出,非零表示遇到某种失败
返回值 被保存在环境变量 $? 中

常见的返回状态码:
0:执行正确
1:通用错误
126:命令或脚本没有执行权限
127:命令没找到

在这里插入图片描述

前台进程和后台进程:
前台进程:
在这里插入图片描述
后台进程:
在这里插入图片描述

进程管理:

查看进程状态:
ps命令可以查看系统进程的状态信息:
-f选项可以详细列出当前用户的进程信息
在这里插入图片描述
-ef选项可以累出所有用户进程的详细信息:
在这里插入图片描述
aux选项可以列出系统所有进程更多的详细信息:
a TTY终端的所有进程
x 其他所有进程
u 显示进程更多列的详细信息
在这里插入图片描述
中止进程:
在这里插入图片描述
在这里插入图片描述
kill命令通过向进程发送信号来中止进程
kill PID 发送中止信号
kill -9 PID 发送杀死信号

中止和杀死的区别:
终止:通知程序正常结束
杀死:不通知程序直接终止或程序不响应直接终止(小心使用!)

Kill信号:
在这里插入图片描述
作业控制:
在这里插入图片描述
ctrl+z:把前台进程放到后台挂起
&:在后台运行进程
jobs:列出所有后台进程(运行和停止的)
fg %job:把后台作业切换到前台运行
bg %job:把在后台挂起的作业,在后台恢复执行

fg,bg,kill用%job作为参数来指定对某一作业进行操作

进程的特殊运行方式:
nohup命令将阻止因为用户注销而导致进程终止直到该进程正常结束,此命令将忽视信号1和3

若用户不重定向输出,nohup将重定向输出到nohup.out文件

deamon守护进程:
daemon是一个永不结束的进程,在系统启动时执行,在系统结束时结束.
daemon是管理和服务进程,用来控制系统资源,提供相关服务,是系统默认启动的进程。例如qdaemon进程,它为系统提供打印队列的管理和服务.
中断系统的daemon,将停止系统的相关服务

习题:

1、什么是进程?
进程是一个程序针对一组数据的一次执行,进程是整个系统中资源分配的最小单位,进程是系统调用的,系统处理机调度最小的单位。

2、进程的环境包括哪些部分?
进程的环境包括:程序或脚本、相关的数据、打开的文件、当前目录、用户和组id号、进程id号(PID)、父进程id号(PPID)、程序变量。

3、什么时候需要使用dot符号执行shell脚本?
当需要shell脚本改变当前shell的变量值时

4、如何传递变量值到子shell?
export 变量命

5、执行下列步骤后,x的值是多少?
① ( … login shell … )
② $ ksh
③ $ x=50
④ $ export x
⑤ $ <ctrl -d>
x的值和执行子shell之前是一样的,如果执行前x的值是没有设置的,则下x的值依旧是未设置

6、如何显示用户正在运行的进程的详细信息?
ps -ef

7、普通用户只能kill自己的作业不能kill其他用户的作业(T/F)?
T

8、如何强制中断一个进程的执行?
kill

9、为什么一个需要运行很长时间作业最好用nohup命令在后台执行?
用nohup在后台执行该作业不会占用用户的终端,而且用户退出系统作业也是可以继续运行

10、UNIX系统中永不结束的系统进程叫什么?
daemon(守护进程)

(以下内容来自湖南大学肖老师的PPT)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值