进程

百科

PID

各个

参数的解释

PID是内核管理进程的标识符,init pid永远为1

Code

Code是进程调用程序的代码块

变量

变量就是

Library

Library即库文件,是进程

File

File即参数,argument,被操作对象

进程的概念是60年代初首先由麻省理工学院的MULTICS系统和IBM公司的CTSS/360系统引入的。

简单结构:

进程(process)其实是用户的代理(agent)

可以用pstree查看当前系统进程机构,如下如所示

clip_image001

我们知道对linux来说一切皆文件,进程也不例外,我们可以通过ls /proc(proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间)查看与进程相关联的文件,如clip_image003

内核的功能。说之前我们来了解一下内核的五个子系统

clip_image004

一:内存的管理

二:进程的管理

三:硬件管理

四:文件系统管理

五:cpu管理

进程的调度控制着进程cpu的访问,当需要选择下一个进程运行的时候,有调度程序选择最值得运行的进程。可运行的进程实际是进等待cpu资源的进程,也就是R进程,如果某个进程在等待其他资源,则该进程是不可运行进程

Linux中进程分为两类

1:用户进程,有用户通过终端(terminal)命令启用的进程,因此又称为终端进程

2:守护进程(daemon):在系统引导式时就启动,是后台服务进程大多数服务进程都是通过守护进程实现的(crond,打印进程),与终端无关

查看系统进程

Ps

a 显示所有与终端有关的进程

x 显示所有与终端无关的进程,即daemon进程

u 以用户为导向显示,即显示进程属主

进程结构,如下图

clip_image006

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 –ef 以完整的格式显示

搜索特定的进程

1:传统的正则表达式

eg:ps axo comman,tty |grep ttys0

2:命令

pgrep –u user 搜索由特定用户发起的进程 eg pgrep –u root

pgrep –G group 搜索由组户发起的进程 eg pgrep –G root

pgrep –p pid 搜索由特定用户发起的进程 (猜想)

更多 man pgrep

pidof +服务名称 显示属于某服务的进程的进程号

eg #pidof sshd

#2717 1982

信号 :就是进程之间通信的信息

可以用 kill –l

clip_image007

上图为所有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 –n num command 表示command命令以优先级n启动

二:已经触发的进程

renice num –p pid 重新调整一个进程的优先级

renice -1 –p 11114 将11114进程的优先级调整为-1

普通用户无法提高自己的优先级,但可以降低自己的优先级

top

交互式查看进程,与之前ps(一个进程snapshot)不同的是,这里可以动态查看各个进程的状态

top的一些参数

-d :后面可以接秒数,表示top刷新时间(默认5s)

-b :可以批处理的方式执行top,

-n :与-b连用,表示进行几次的top输出文件

-p :指出某些个pid来进行观察监测

eg: top –d 2

top –b –n 2 </tmp/top.txt

top -d 2 –p10604

clip_image009

top执行结果参数分析

参数分析

clip_image011

仅进行一次的工作任务分配:at

at的语法

clip_image013

clip_image015

clip_image017

at –l 可以显示所有的作业列表

at作业的控制

clip_image019

命令分组

当要让两个命令一起执行时,就要对命令进行分组(说明:分组后的命令不是在当前shell中执行的,而是在其子shell中进行)下面试验一下

date;who|wc -l

clip_image020

看到结果并非是我们预期的那样,这是我们就得进行分组操作

(date;who)|wc -l

clip_image021

成功了,所以当需要两个命令同时执行时,就需要命令分组

信号捕捉问题

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/,如图所示

clip_image022

其他的如图所示

环境变量

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 服务名称 -–list 效果差不多