进程
百科
PID |
各个 参数的解释 |
PID是内核管理进程的标识符,init pid永远为1 |
Code |
Code是进程调用程序的代码块 |
|
变量 |
变量就是 |
|
Library |
Library即库文件,是进程 |
|
File |
File即参数,argument,被操作对象 |
进程的概念是60年代初首先由麻省理工学院的MULTICS系统和IBM公司的CTSS/360系统引入的。
简单结构:
进程(process)其实是用户的代理(agent)
可以用pstree查看当前系统进程机构,如下如所示
我们知道对linux来说一切皆文件,进程也不例外,我们可以通过ls /proc(proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间)查看与进程相关联的文件,如
内核的功能。说之前我们来了解一下内核的五个子系统
一:内存的管理
二:进程的管理
三:硬件管理
四:文件系统管理
五:cpu管理
进程的调度控制着进程cpu的访问,当需要选择下一个进程运行的时候,有调度程序选择最值得运行的进程。可运行的进程实际是进等待cpu资源的进程,也就是R进程,如果某个进程在等待其他资源,则该进程是不可运行进程
Linux中进程分为两类
1:用户进程,有用户通过终端(terminal)命令启用的进程,因此又称为终端进程
2:守护进程(daemon):在系统引导式时就启动,是后台服务进程大多数服务进程都是通过守护进程实现的(crond,打印进程),与终端无关
查看系统进程
Ps
a 显示所有与终端有关的进程
x 显示所有与终端无关的进程,即daemon进程
u 以用户为导向显示,即显示进程属主
进程结构,如下图
USER:进程属主,既有那个用户发起的进程
PID: Process Id,进程唯一标识符
%CPU: Currently, it is the CPU time used divided by the time the process has been
running (cputime/realtime ratio), expressed as a percentage.
%MEM: ratio of the process?. resident set size to the physical memory on the machine, expressed as a percentage
VSZ:该进程使用的虚拟内存量(KB)
RSS:该进程占用的固定内存量(KB)
TTY:该进程哪个终端上运行,若与终端有关,则显示(?)。如果tty1-tty6市本级上的登陆者进程,若为pts/0等,则表示有网络连接主机进程
STAT:该进程的当前状态。主要状态有:
-R 该进程当前正在运行,或者等待运行
-S 该进程当前正在睡眠,但可被某些信号唤醒
-T 该进程当前正在检测或停止
-Z 该进程已终止,但其父进程无法正常终止它,造成“僵尸”进程状态
START:该进程被触发启动的时间
TIME:该进程实际使用CPU运行的时间
COMMAND:该进程的实际命令
补充:优先级问题
状态S后边的字符表示该进程的优先级
<:表示高优先级
N:低优先级
查看进程:
前面已经有所介绍,这里详细介绍一下
ps aux(不加―) 查看所有进程(包括与终端有关没关的)
ps axo keyword,keyword,keyword 查看进程的某些选项
eg:ps axo comman,tty
ps �Cef 以完整的格式显示
搜索特定的进程
1:传统的正则表达式
eg:ps axo comman,tty |grep ttys0
2:命令
pgrep �Cu user 搜索由特定用户发起的进程 eg pgrep �Cu root
pgrep �CG group 搜索由组户发起的进程 eg pgrep �CG root
pgrep �Cp pid 搜索由特定用户发起的进程 (猜想)
更多 man pgrep
pidof +服务名称 显示属于某服务的进程的进程号
eg #pidof sshd
#2717 1982
信号 :就是进程之间通信的信息
可以用 kill �Cl
上图为所有linux所有信号
常用的有1)SIGHUP :重读配置文件
9)SIGKILL :强行终止进程
15)SIGTERM :允许该进程完成本次计算在终止(默认)
19)SIGSTOP :
结束进程
kill + pid =kill -15 +pid = kill - SIGTERM PID = kill - TERM PID
killall
-u user 结束属于某个用户的进程
服务名称(httpd) 结束某个服务的全部进场
修改优先级
每个进程在启动的时候都有一个优先级(priority),,优先级范围在 -20-19之间,默认是0,也可以修改,现在就来学习一下怎么修改进程优先级
一:未启动的进程
nice �Cn num command 表示command命令以优先级n启动
二:已经触发的进程
renice num �Cp pid 重新调整一个进程的优先级
renice -1 �Cp 11114 将11114进程的优先级调整为-1
普通用户无法提高自己的优先级,但可以降低自己的优先级
top
交互式查看进程,与之前ps(一个进程snapshot)不同的是,这里可以动态查看各个进程的状态
top的一些参数
-d :后面可以接秒数,表示top刷新时间(默认5s)
-b :可以批处理的方式执行top,
-n :与-b连用,表示进行几次的top输出文件
-p :指出某些个pid来进行观察监测
eg: top �Cd 2
top �Cb �Cn 2 </tmp/top.txt
top -d 2 �Cp10604
top执行结果参数分析
参数分析
仅进行一次的工作任务分配:at
at的语法
at �Cl 可以显示所有的作业列表
at作业的控制
命令分组
当要让两个命令一起执行时,就要对命令进行分组(说明:分组后的命令不是在当前shell中执行的,而是在其子shell中进行)下面试验一下
date;who|wc -l
看到结果并非是我们预期的那样,这是我们就得进行分组操作
(date;who)|wc -l
成功了,所以当需要两个命令同时执行时,就需要命令分组
信号捕捉问题
trap可以根据后面的信号指定不住道信号
格式
trap ‘ command ’ SIG*
这表示当收到SIG*信号时,trap执行 ‘ ’ 中间的命令
eg
trap () {
trap ‘echo “you stop it && exit 3” ’ SIGNINT
}
CONFIGURING THE BASH SHELL
shell变量:环境变量 本地变量
env 可以查看所有的环境变量
set 可以查看所有的变量(包括环境变量和本地变量)
export可以声明一个环境变量
export PATH=$PATH:/root
此声明只对当前shell生效,重启系统后就会失效
linux中常见的环境变量
HOSTNAME:主机名称,可以用hostname命令临时声明一个,如果要永久生效必须得写到配置文件中/etc/sysconfig/network/,如图所示
其他的如图所示
alias可以为命令指定自己喜欢的别名
例:alias cl=clear 前一个是别名,后者是命令
当起别名是,命令中含有空格需要用单引号包括住
alias cdn=’ /etc/sysconfig/network-scripts/ifcfg-eth0 ’
这样的声明只对当前shell生效,永久生效后面介绍
startup文件时系统初始化用户shell环境的配置文件
linux shell分为两类
一:登陆shell
登陆shell是用户可以通过账号密码登陆,获取系统资源,登陆
二:非登陆shell
系统完成自动化管理所处的shell环境,运行在系统的后台,不需要登陆,如crontab,at等
profile登陆配置文件
在/root目录下有关于profile的隐藏文件
/etc/profile /etc/profile.d /etc/bashrc
在用户的家目录下,也有几个关于profile的文件
~/.bash-profile ~./bashrc
登陆shell读取配置文档的顺序
/etc/profile -- ~/.bash-profile - /etc/profile.d --~./bashrc---/etc/bashrc,
看过这个顺序,我们看出家目录中的设置回覆盖全局变量,
非登陆shell读取配置文档的顺序
~/.bashrc -- /etc/bashrc -- /etc/profile.d
profile文件是登陆shell环境配置文件
bashrc 非登陆shell的环境配置文件
/etc/profile ,~/.bash-profile 定义环境变量及执行一些系统检查命令
/etc/bashrc ~./bashrc 定义本地变量,也可以做一些改名,如alias
source +文件 表示重读文件
如当我们配置过网卡属性时,我们不仅可以用service network restart 或 ifdown eth0 &&
ifup eth0 ,我们也可以用source /etc/sysconfig/network-scripts/ifcfg-eth0,重读一下配置文件即可
source +文件= . (点) 文件
service 服务名称 status可以查看某个服务的状态,与chkconfig 服务名称 -�Clist 效果差不多
’